簡體   English   中英

發送JSON請求時getInputStream引發EOFException

[英]getInputStream throws EOFException when sending JSON request

我在以下Android代碼中從getInputStream獲得了EOFException。

private void downloadUrl() {
    HttpsURLConnection conn = null;
    DataOutputStream printout = null;
    try {
        try {
            conn = (HttpsURLConnection) new URL("some url").openConnection();
            conn.setRequestMethod("POST");
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setAllowUserInteraction(false);
            conn.setRequestProperty("Accept", "application/json");
            conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
        } 
        catch (ProtocolException e){
        }

        JSONObject jsonReq = new JSONObject();
        jsonReq.put("userID", "id");
        jsonReq.put("password", "1234");

        OutputStream output = conn.getOutputStream();
        try {
            OutputStreamWriter wr = new OutputStreamWriter(output);
            wr.write(URLEncoder.encode(jsonReq.toString(),"utf-8")); 
            wr.flush();
            wr.close();
        }
        catch (IOException e) {
        }

        InputStream in = conn.getInputStream();   //I get EOFException here
        try {
            BufferedReader rd  = new BufferedReader(new InputStreamReader(in));
            String responseSingle = null;
            while ((responseSingle = rd.readLine()) != null) {
                response = response + responseSingle;
            }
            rd.close(); 
        }
        catch (IOException e) {
        }
        finally {
            if (in != null)
            in.close();
        }
    } 
    catch (IOException e){
    } 
    catch (JSONException e) {
    } 
    finally{
        if(conn!=null)  
            conn.disconnect();
    }  
}

是什么導致此異常?

公共類EOFException擴展了IOException:

表示在輸入過程中意外到達文件結尾或流結尾。

http://docs.oracle.com/javase/7/docs/api/java/io/EOFException.html

您正在調用conn.getOutputStream(); 然后調用conn.getInputStream(); 無需重置。 您已經在文件末尾了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM