2016-04-09 5 views
2

Для отладки, мой PHP сервер вторя очень простую строку в моей Android клиента:Android не получения ответа от PHP сервера

<?php echo "I REALLY LIKE PIE" ?> 

Мой Android клиент имеет следующий код, чтобы получить такую ​​строку:

URL url = new URL("http://192.168.0.107/index.php"); 
     urlConnection = (HttpURLConnection) url.openConnection(); 


     urlConnection.setReadTimeout(10000); 
     urlConnection.setConnectTimeout(15000); 
     urlConnection.setRequestMethod("POST"); 
     urlConnection.setDoOutput(true); 
     urlConnection.setDoInput(true); 
     urlConnection.connect(); 

     int HTTPResult = urlConnection.getResponseCode(); 
     if (HTTPResult == HttpURLConnection.HTTP_OK) { 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())); 
      String output = ""; 
      while ((output = bufferedReader.readLine()) != null) { 
       returnedString.append(output); 
      } 
      bufferedReader.close(); 

     } 

     urlConnection.disconnect(); 

Однако переменная «output» имеет значение NULL, и, следовательно, возвращаемая строка также является нулевой. Почему я не получаю ответа?

+0

http://192.168.0.107/index.php является локальным IP и, вероятно, его не доступен с андроид устройства. –

+0

ли соединение успешно? что значение HTTPResult? –

+0

192.168.0.107 это сеть ip-адрес или IP-адрес вашей системы, где настроен ваш проект? , если это ваш IP-адрес вашей системы, тогда он не будет работать напрямую. Если это сетевой IP-адрес и ваш проект настроен на сервере, вы можете подключить устройство к сети (через Wi-Fi). и объединить ресурсы проекта, вы можете получить к нему доступ. –

ответ

2
  1. Добавить журналы, данные для целей отладки или использовать отладчик android с точками останова.
  2. Убедитесь, что вы сделали необходимые изменения в файле конфигурации php, чтобы сделать его доступным через ваш телефон. Он должен работать. Дайте мне знать, если проблема не исчезнет. (Я использую этот код с некоторыми незначительными изменениями для разбора JSON объектов после этого, но так как его просто строка в вашем случае она должна работать.
  3. Для намного лучше, проще и оптимизированы, Использование OkHttp или Volley

    URL url = new URL("http://192.168.0.107/index.php"); 
    urlConnection = (HttpURLConnection) url.openConnection(); 
    BufferedReader reader = null; 
    
    urlConnection.setReadTimeout(10000); 
    urlConnection.setConnectTimeout(15000); 
    urlConnection.setRequestMethod("POST"); 
    urlConnection.setDoOutput(true); 
    urlConnection.setDoInput(true); 
    urlConnection.setRequestMethod("GET"); 
    urlConnection.connect(); 
    
    // Read the input stream into a String 
    InputStream inputStream = urlConnection.getInputStream(); 
    StringBuffer buffer = new StringBuffer(); 
    if (inputStream == null) { 
    
    // Nothing to do. 
    
    } 
    reader = new BufferedReader(new InputStreamReader(inputStream)); 
    
    String line; 
    while ((line = reader.readLine()) != null) { 
    // Since it's JSON, adding a newline isn't necessary (it won't affect  parsing) 
    // But it does make debugging a *lot* easier if you print out the completed 
    // buffer for debugging. 
    buffer.append(line + "\n"); 
    } 
    
    
    bufferedReader.close(); 
    
    } 
    
    urlConnection.disconnect(); 
    
+0

Какие изменения в файле Apache httpd.conf я должен сделать? Я не в другие библиотеки, и я предпочитаю выполнять эту задачу с помощью библиотек, предоставленных 23-м API. – darkterbears

+0

В файле httpd.conf уточните, что термин «Отклонить» от всех измените его на «Разрешить от всех». Работает ли код выше? Любые журналы, полученные в консоли? – codeyourstack

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