2017-08-17 6 views
0

J'ai une situation étrange. Toutes les demandes fonctionnent bien lors de l'utilisation de téléphones et de périphériques virtuels, mais si j'essaie d'utiliser la tablette, rien ne fonctionne.Impossible d'obtenir urlConnection.getInputStream() à l'aide de la tablette

Ma demande:

String path = "https://..."; 
HttpURLConnection urlConnection = null; 
try{ 
    URL url = new URL(path); 
    urlConnection = (HttpURLConnection) url 
      .openConnection(); 
    urlConnection.setRequestMethod("GET"); 
    urlConnection = Tools.setHeader(urlConnection); 
    urlConnection.setDoInput(true); 

    LOG.debug("Start input stream"); 
    InputStream inputStream = urlConnection.getInputStream(); 
    LOG.debug("Input stream exist "+inputStream.toString()); 

    String response = Tools.streamToString(inputStream); 
    inputStream.close(); 
    JSONObject jsonResponse = new JSONObject(response); 

Je ne reçois aucun message d'erreur. En utilisant le serveur proxy, je vois que ma demande envoie et la réponse reçue. Mais dans le programme urlConnection.getInputStream() méthode ne rien obtenir. Le programme ne va pas plus loin. Je ne vois pas le deuxième journal.

J'ai essayé de définir des délais, mais cela n'a pas aidé. La réponse vient rapidement (1-2 secondes).

Répondre

0

Vérifiez la version android de votre tablette, cela pourrait poser problème. A partir de ANDROID O il ne supporte pas la requête http. La solution est: téléchargez une autre image de la tablette avec la version guimauve et cochez la case.

Mise à jour: essayez ce code s'il vous plaît

HttpURLConnection connection = null; 
BufferedReader reader = null; 
    try { 
     URL url = new URL(params[0]); 
     connection = (HttpURLConnection)url.openConnection(); 
     connection.connect(); 
     InputStream stream =connection.getInputStream(); 
     reader = new BufferedReader(new InputStreamReader(stream)); 
     StringBuffer buffer = newStringBuffer(); 
      String line = ""; 
      while ((line = reader.readLine()) != null) { 
      buffer.append(line+"\n"); 
      Log.d("Response: ", "> " + line); //here u ll get whole response...... :-) 
     } 
     return buffer.toString(); 
    } 
    catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
    finally { 
     if (connection != null) { 
      connection.disconnect(); 
     } 
     try { 
      if (reader != null) { 
       reader.close(); 
       } 
      } 
      catch (IOException e) 
     { 
       e.printStackTrace(); 
     } 
    } 
    return null; 
} 
+0

J'utilise Tablet réelle, la version Android 5.1. 1 – Delphian

+0

Pouvez-vous s'il vous plaît partager y ou "URL" que vous utilisez, donc nous pouvons vérifier –

+0

Je ne peux pas désolé. Mais j'ai testé l'URL différente et j'ai attrapé les mêmes résultats. – Delphian

1

Heyy Je cours avec mon code suivant à la fois mobile ou une tablette. Je vous fournis mon code jetez un oeil dessus.

code:

public class URLConnectionCheck extends Activity { 

TextView resultText; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_urlconnection_check); 

    resultText = (TextView)findViewById(R.id.resultTextView); 

    new AsynchTaskTest().execute(); 

} 

private class AsynchTaskTest extends AsyncTask<Void,Void,String> 
{ 
    @Override 
    protected String doInBackground(Void... params) { 

     String path = "http://echo.jsontest.com/key/value/one/two"; 

     HttpURLConnection urlConnection = null; 
     BufferedReader reader=null; 

     try{ 
      URL url = new URL(path); 

      urlConnection = (HttpURLConnection)url.openConnection(); 

      urlConnection.connect(); 

      InputStream inputStream = urlConnection.getInputStream(); 
      reader = new BufferedReader(new InputStreamReader(inputStream)); 

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

      while((line = reader.readLine()) !=null) { 
       buffer.append(line+"\n"); 

      } 

      return buffer.toString(); 

     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
      return "exception"; 
     } 
    } 

    @Override 
    protected void onPostExecute(String aVoid) { 
     super.onPostExecute(aVoid); 

     resultText.setText(aVoid); 
    } 
} 

}

et le résultat est sur mes écrans comme ::

mobile screenshot

tablet screenshot

+0

Ankit, ce n'est pas lié à la demande, puisque la demande peut ou ne peut pas fonctionner, à un moment donné, je ne reçois pas la réponse au programme, même si je vois la réponse existe. Apparemment, c'est une sorte de problème associé aux paramètres de la tablette ou au processus de premier plan. À l'heure actuelle, tout fonctionne bien, même si je n'ai rien changé, et dans un autre temps ça cesse de fonctionner. J'ai un long processus en mode premier plan. Merci pour vos efforts pour trouver une solution, je vous ai ajouté un plus! – Delphian