2014-02-02 2 views
0

Мое приложение использует TRESTClient, TRESTRequest и TRESTResponse в моем приложении и не имеет проблем, когда мое устройство находится на Wi-Fi, но im получает EiDHTTPProtocolException HTTP/1.1 403 Запрещено, если оно находится в сети 3G.XE5 TREstClient EIdHTTPProtocolException в 3G

ИНТЕРНЕТ установлен в значение ИСТИНА в разрешении использования.

код представляет собой простой вызов, чтобы выполнить

RestRequest.Execute;

Цените какие-либо идеи или указатели :)

+0

Что вы подключаете * к *? Вы подтвердили, что можете получить доступ к нему через 3G (используя браузер на устройстве)? –

+0

yup, я попытался получить доступ к ссылке с помощью 3G, с разными параметрами, и я получаю данные json без каких-либо проблем. –

ответ

0

Инди (который TRESTClient использует внутренне) не заботится, как устройство подключается к Интернету , TCP/IP - это TCP/IP, независимо от используемого оборудования. Тот факт, что вы получаете HTTP-ошибку, доказывает, что, поскольку 403 Forbidden сообщается сервером HTTP, к которому вы подключаетесь. Отправляемый HTTP-запрос либо пропускает учетные данные авторизации, необходимые для HTTP-сервера, либо иным образом искажается каким-то образом HTTP-серверу не нравится. Вам нужно использовать пакетный сниффер для просмотра отправляемых HTTP-запросов. Indy не отправляет разные HTTP-запросы для WiFi против 3G, поэтому происходит что-то еще. Возможно, провайдер telco, например, изменяет HTTP-запросы во время полета.

+0

. Я попытаюсь использовать wirehark завтра, чтобы узнать, в чем разница, или я могу просто отказаться от TRESTClient и использовать TIdHTTP непосредственно –

Смежные вопросы