【问题标题】:HttpUrlConnection getResponseCode throws IOExceptionHttpUrlConnection getResponseCode 抛出 IOException
【发布时间】:2014-07-08 11:09:29
【问题描述】:

当我尝试调用 getCodeResponse() 时出现 IOException。当参数有效时没有异常,代码响应为 200。如果参数错误,服务器应返回 401 代码。我已经在 hurl.it 上测试了查询,如果参数错误,我会得到 401 代码。可能发生错误代码时HttpURLConnection类会抛出异常。

        URL url = new URL(sUrl);
        String charset = "UTF-8";
        conn = (HttpsURLConnection) url.openConnection();
        conn.setReadTimeout(DEFAULT_TIMEOUT /* milliseconds */);
        conn.setConnectTimeout(DEFAULT_TIMEOUT /* milliseconds */);
        conn.setRequestMethod(methodType);
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.addRequestProperty("Accept-Charset", charset);
        conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.addRequestProperty(HEADER_ACCEPT_ENCODING, ENCODING_GZIP);

            conn.setDoOutput(true);

            conn.setInstanceFollowRedirects(false);

            OutputStream os = conn.getOutputStream();
            BufferedWriter writer = new BufferedWriter(
                    new OutputStreamWriter(os));

            writer.write(query);
            writer.flush();
            writer.close();
            //os.write(query.getBytes());
            os.flush();
            os.close();
            conn.connect();

            if(conn != null){

                responseCode = conn.getResponseCode();
                result = readResponse(conn);
            }

【问题讨论】:

    标签: android httpurlconnection


    【解决方案1】:

    IOException 表示有 401 响应。打印堆栈跟踪,如果其他一切都正确,它将给出 401 响应。比如:java.io.IOException: Server returned HTTP response code: 401 for URL:

    【讨论】: