2016-05-05 5 views
1

Wie kann ich diese Probleme beheben kann ich meine Input bekommen nicht InputStream inputStream = connection.getInputStream();java.io.EOFException und connection.getInputStream()

Funktion:

StringBuffer result = new StringBuffer(""); 
    try { 
     URL url = new URL(urlString); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setRequestProperty("User_Agent", ""); 
     connection.setRequestMethod("POST"); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream inputStream = connection.getInputStream(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(inputStream)); 

     String line = ""; 
     while ((line = rd.readLine()) != null) { 
      result.append(line); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.e("REQUEST Result", "IOException = " + e.getMessage()); 
    } 
    Log.d("REQUEST Result", "result = " + result); 
    return result; 
} 

logcat:

05-04 18:18:31.190 5027-5093/? W/System.err: java.io.EOFException 
05-04 18:18:31.194 5027-5093/? W/System.err:  at libcore.io.Streams.readAsciiLine(Streams.java:203) 
05-04 18:18:31.194 5027-5093/? W/System.err:  at libcore.net.http.HttpEngine.readHeaders(HttpEngine.java:621) 
05-04 18:18:31.194 5027-5093/? W/System.err:  at libcore.net.http.HttpEngine.readResponseHeaders(HttpEngine.java:574) 
05-04 18:18:31.194 5027-5093/? W/System.err:  at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:821) 
05-04 18:18:31.194 5027-5093/? W/System.err:  at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:283) 
05-04 18:18:31.194 5027-5093/? W/System.err:  at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177) 
05-04 18:18:31.198 5027-5093/? W/System.err:  at com.example.sabrine123.carhapaty.Fragments.AddCarFragment.request(AddCarFragment.java:206) 
05-04 18:18:31.198 5027-5093/? W/System.err:  at com.example.sabrine123.carhapaty.Fragments.AddCarFragment$AddAnnonce.doInBackground(AddCarFragment.java:154) 
05-04 18:18:31.198 5027-5093/? W/System.err:  at com.example.sabrine123.carhapaty.Fragments.AddCarFragment$AddAnnonce.doInBackground(AddCarFragment.java:122) 
05-04 18:18:31.198 5027-5093/? W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:287) 
05-04 18:18:31.202 5027-5093/? W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
05-04 18:18:31.202 5027-5093/? W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
05-04 18:18:31.202 5027-5093/? W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
05-04 18:18:31.202 5027-5093/? W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
05-04 18:18:31.202 5027-5093/? W/System.err:  at java.lang.Thread.run(Thread.java:856) 
05-04 18:18:31.202 5027-5093/? E/REQUEST Result: IOException = null 
05-04 18:18:31.206 5027-5093/? D/REQUEST Result: result = 
05-04 18:18:31.206 5027-5027/? I/System.out: erreur = End of input at character 0 of 
+0

Haben Sie gelesen [this] (https://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#readLine()) vor dem Lesen einer Zeile auf Null überprüfen. – t0mm13b

Antwort

0

Sie sollten prüfen, ob die HttpURLConnection NULL ist, bevor Sie versuchen, einen InputStream davon zu erhalten.

Wenn ein Eingangsstrom von einem HttpURLConnection bekommen:

InputStream inputStream = new BufferedInputStream(connection.getInputStream()); 

Ich glaube nicht, dass es unbedingt notwendig ist für Sie connection.connect() zu tun, nachdem Sie bereits url.openConnection() getan haben;

Ich merke auch, dass Sie Inhalte posten. page on HttpURLConnection aus dem Android Entwickler:

Für eine optimale Leistung sollten Sie rufen entweder setFixedLengthStreamingMode (int), wenn die Körperlänge im Voraus bekannt ist, oder setChunkedStreamingMode (int), wenn es nicht ist. Andernfalls wird HttpURLConnection gezwungen, den gesamten Anforderungskörper im Speicher zu puffern, bevor er übertragen wird, wodurch der Heap verschwendet wird (und möglicherweise erschöpft wird) und die Latenz erhöht wird.

Diese Seite behandelt möglicherweise zusätzliche Probleme, die Sie mit der Klasse haben.

Verwandte Themen