2017-02-05 1 views
1

Я пытаюсь получить данные из URL в моем локальном хосте на андроид приложение, но я всегда получаю FileNotFoundException с этим URL:как получить данные JSon из URL в Laravel для андроид

http://10.0.2.2/index.php/androidqname/PC396458

Однако, когда я использую другие тестовые данные json онлайн, он работает нормально. Например, с этим URL:
http://echo.jsontest.com/key/value/otherkey/othervalue

Это мой андроид код, который я называю внутри класса, который расширяет asyntask

public String newServerRequest(String uri) 
{ 

    HttpURLConnection connection = null; 
    BufferedReader reader = null; 
    int resCode=0; 

    try { 
     URL url = new URL(uri); 
     connection = (HttpURLConnection) url.openConnection(); 
     connection.connect(); 

     resCode=connection.getResponseCode(); 
     InputStream stream = connection.getInputStream(); 

     reader = new BufferedReader(new InputStreamReader(stream)); 

     StringBuffer buffer = new StringBuffer(); 
     String line = ""; 

     while ((line = reader.readLine()) != null) { 
      buffer.append(line); 
      Log.d("Response Laminjanneh: ", "> " + line +" "+resCode); //here u ll get whole response...... :-) 

     } 

     String finalObj=buffer.toString(); 

     JSONObject parentObj= new JSONObject(finalObj); 

     //JSONArray jArray= parentObj.getJSONArray(0); 

     String name = parentObj.getString("otherkey"); 
     String fname = parentObj.getString("key"); 



     return name+" == "+fname; 


    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
     Log.d("Response janneh 1 : ", "> " + e.getMessage()+" "+resCode); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
     Log.d("Response janneh 2 : ", "> " + e.getMessage()+" "+resCode); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } finally { 
     if (connection != null) { 
      connection.disconnect(); 
     } 
     try { 
      if (reader != null) { 
       reader.close(); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return null; 

} 

Это мой Laravel контроллер, который дает мне данные в формате JSON:

public function questionairename($pcodenumber) 
{ 
    $questionaireName= Questionaire_name::where('project_code_number','=',$pcodenumber)->get(); 

    return json_encode($questionaireName); 
} 

ответ

0

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

В противном случае вы можете попробовать подключить оба устройства (мобильные и компьютерные) в одной сети.

Еще одна рекомендация, хотя она не связана с вопросом, заключается в использовании любых сетевых библиотек, таких как Volley или Retrofit вместо HttpURLConnection.

+0

Спасибо за ответ, я использую свой эмулятор. –

+0

Попробуйте URL http://10.0.2.2/index.php/androidqname/PC396458, доступный из браузера эмулятора или нет. –

+0

нет! не работает!!! –

0

10.0.2.2 является псевдонимом для localhost или 127.0.0.1 для андроид только эмулятор. Если вы хотите получить доступ к серверу с устройства работает приложение, то:

1) Либо ваш сервер должен быть общедоступным или устройство и сервер должны находиться в одной и той же сети

2) Сервер должен настроить для приема соединений с другими устройствами в сети

+0

Я получаю сообщение об ошибке при использовании эмулятора android, спасибо за ответ –

+0

Вы протестировали его, если он работает из браузера на вашем компьютере? Просто замените '10.0.2.2' на' localhost' для этого. Также проверьте, работает ли ваш сервер на каком-то другом порту. – akash93

+0

Нет, это не работает для меня. Я получил сообщение Этот сайт не может быть достигнут 10.0.2.2 занял слишком много времени, чтобы ответить. –

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

  • Нет связанных вопросов^_^