Тайм-аут Android Httpget - PullRequest
       9

Тайм-аут Android Httpget

0 голосов
/ 14 сентября 2011

Я пытаюсь получить некоторые данные из БД MySQL через скрипт php.Мой код: `

            HttpClient httpclient = new DefaultHttpClient();

            HttpGet httpget = new HttpGet("http://example.com/fscript.php");
            HttpResponse response= null;
            System.out.println(httpget.toString());
            try{
               response= httpclient.execute(httpget); 
            }catch(Exception e){
               e.printStackTrace();
            }

, и я всегда получаю тайм-аут в LogCat и в StackTrace:

java.net.SocketException: The operation timed out

, когда я использую один и тот же код, но указываю на http://10.0.2.2:90/fscript.php, сервер, который у меня есть на моей машине для разработки, он работает нормально, поэтому я думаю, что это связано с удаленным сервером.И когда я записываю адрес в браузере, он возвращает строку json, которую возвращает мой скрипт, поэтому я думаю, что проблема также не в php.В моем манифесте у меня есть интернет-разрешение в приложении, мне нужно что-то еще?Или, может быть, это то, что я должен настроить в моем веб-сервере, чтобы принимать звонки с Android?

Просто угадай, оценю любую помощь.

Ответы [ 3 ]

1 голос
/ 14 сентября 2011

возможный дубликат ответа

Это происходит потому, что иногда вашему серверу требуется слишком много времени, чтобы ответить. На самом деле это также может происходить из-за медленной сети, поэтому у вас нет полного контроля над ней. Если вы используете HttpClient, вы можете увеличить время ожидания:

java.net.socketexception: истекло время ожидания операции в Android?

0 голосов
/ 14 сентября 2011

Я свободно использую здесь язык: 10.0.2.2 - это локальный хост Android, который указывает на 127.0.0.1 на вашем компьютере.Поэтому, если ваш скрипт работает с http://127.0.0.1:90/fscript.php,, он должен быть виден на http://10.0.2.2:90/fscript.php на Android.

0 голосов
/ 14 сентября 2011

Вашему веб-серверу наплевать, что звонок поступает с устройства Android. Он просто видит HTTP-запрос и обрабатывает его соответствующим образом. Я бы поинтересовался, может ли ваше Android-устройство на самом деле связаться с нелокальным адресом. например Возможно, брандмауэр блокирует запрос. Если это в эмуляторе Android, убедитесь, что его сетевое соединение настроено правильно.

...