1

Lorsque vous essayez de vous connecter à http://ws.audioscrobbler.com/2.0/ avec les données post en utilisant HttpURLConnection, je reçois (au hasard)EOFException et FileNotFoundException dans HttpURLConnection getInputStream()

EOFException 

ou

FileNotFoundException: http://ws.audioscrobbler.com/2.0/ 

sur mon Nexus 4 fonctionnant sous Android 4.2 .2.

Quelqu'un peut-il aider?

EDIT

je suis passé à 4,3: même question.

public InputStream getData(String url_str, List<NameValuePair> postData) { 

    Map<String, Object> response = new HashMap<String, Object>(); 

    InputStream is = null; 
    HttpURLConnection conn = null; 

    try { 

     URL url = new URL(url_str); 

     conn = (HttpURLConnection) url.openConnection(); 
     conn.setReadTimeout(CONNECTION_TIMEOUT); 
     conn.setConnectTimeout(READ_TIMEOUT); 
     conn.setRequestMethod("POST"); 
     conn.setDoInput(true);      

     if(postData != null){ 

      conn.setDoOutput(true); 

      OutputStream os = conn.getOutputStream(); 
      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
      writer.write(getQuery(postData)); 
      writer.close(); 
      os.close(); 
     } 


     // Starts the query 

     conn.connect(); 


     // Get and return response 

     is = conn.getInputStream();    

     return is; 

    } catch (IOException e) { 

     // ... 

    } finally { 

     if(conn != null){ 
      conn.disconnect(); 
     } 

     if (is != null) { 
      try { 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 


private String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException 
{ 
    StringBuilder result = new StringBuilder(); 
    boolean first = true; 

    for (NameValuePair pair : params) 
    { 
     if (first) 
      first = false; 
     else 
      result.append("&"); 

     result.append(URLEncoder.encode(pair.getName(), "UTF-8")); 
     result.append("="); 
     result.append(URLEncoder.encode(pair.getValue(), "UTF-8")); 
    } 

    return result.toString(); 
} 
+0

ce que vous essayez de faire avec la connexion http ?? – Wishy

+0

Une requête http avec des données POST !! – jul

Répondre

1

J'ai vérifié conn.getResponseCode() et obtenir un 403. L'exception peut être dû à cela.

0

bien essayer cela pourrait aider

public void httppost() 
{ 

    URL="Your URL"; 

    InputStream is = null; 

    //Making HTTP request 
    try { 
     // defaultHttpClient 
     DefaultHttpClient httpClient = new DefaultHttpClient(); 

     namevaluepair.add(new BasicNameValuePair("name1",value1)); 
     namevaluepair.add(new BasicNameValuePair("name2",value2)); 


     String enc_url = urlEncode(URL); 
     HttpPost httpPost = new HttpPost(enc_url); 

     httpPost.setEntity(new UrlEncodedFormEntity(namevaluepair)); 

     HttpResponse httpResponse = httpClient.execute(httpPost); 
     HttpEntity httpEntity = httpResponse.getEntity(); 
     is = httpEntity.getContent();    

    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try { 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       is, "iso-8859-1"), 8); 
     StringBuilder sb = new StringBuilder(); 
     String line = null; 
     while ((line = reader.readLine()) != null) { 
      sb.append(line); 
     } 
     is.close(); 
     String response = sb.toString(); 

    } catch (Exception e) { 
     Log.e("Buffer Error", "Error converting result " + e.toString()); 
    } 

} 
+0

Merci, mais je voudrais comprendre ce qui ne va pas avec 'HttpURLConnection' dans mon code. – jul

0

Vous devez spécifier la longueur du contenu.

if(postData != null){ 
       byte[] requestContent = getQuery(postData); 
       conn.setDoOutput(true); 
// Specify content type 
       conn.setRequestProperty("Content-Type", mRequestContentType); 
       conn.setRequestProperty("Content-Length", 
        Integer.toString(requestContent.length)); 
       conn.setFixedLengthStreamingMode(requestContent.length); 
       OutputStream os = conn.getOutputStream(); 
       BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
       writer.write(requestContent); 
       writer.close(); 
       os.close(); 
      } 
Questions connexes