【问题标题】:HttpUrlConnection request not working without reading the responseHttpUrlConnection 请求在不读取响应的情况下不起作用
【发布时间】:2015-11-06 02:58:13
【问题描述】:

我正在尝试通过HttpUrlConnection 发布json 请求(请注意,我只需要将数据推送到服务器,响应将被忽略)。我已经运行了几个示例,但仍然无法正常工作,没有数据被添加到服务器。

这是我的代码:

   URL url = new URL(urlString);
   connection = (HttpURLConnection) url.openConnection();
   connection.setRequestMethod("POST");
   connection.setDoOutput(true);
   connection.setRequestProperty("Content-Type", "application/json");
   connection.setRequestProperty("Accept", "application/json");

   OutputStream stream = connection.getOutputStream();
   stream.write(requestJSON.toString().getBytes());
   stream.flush();
   stream.close();

更新

当我尝试读取stream.close() 之后的响应时,我注意到代码有效,例如:

connection.getResponseMessage()

这是否意味着必须阅读响应才能完成请求?

【问题讨论】:

  • stream.close()之前添加connection.connect();
  • 像下面这样使用OutputStream outputStream = new BufferedOutputStream(urlConnection.getOutputStream()); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(outputStream, "utf-8")); writer.write(requestBody); writer.flush(); writer.close(); outputStream.close();

标签: android json httpurlconnection


【解决方案1】:

使用这个

如果请求是 GET

 public static String getDataUsingGetRequest(String urlVal) {
    String Content = null;
    BufferedReader reader = null;
    try {
        URL url = new URL(urlVal);
        HttpURLConnection conn = (HttpURLConnection)url.openConnection();
        conn.setConnectTimeout(15 * 1000);
        reader = new BufferedReader(new InputStreamReader(
                conn.getInputStream()));
        StringBuilder sb = new StringBuilder();
        String line = null;

        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }

        Content = sb.toString();
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        try {
            reader.close();
        } catch (Exception ex) {
        }
    }
    return Content;
}

// 如果请求已发布

public static String getDataUsingPostRequest(String urlStr,  String inputJson) {

    String result = null;
    try{
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Accept", "application/json");
        conn.setRequestProperty("Content-type", "application/json");
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.connect();
        OutputStream os = conn.getOutputStream();
        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(inputJson);
        writer.flush();
        writer.close();
        os.close();

        BufferedReader reader = new BufferedReader(new InputStreamReader(
                conn.getInputStream()));
        StringBuilder sb = new StringBuilder();
        String line = null;

        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }
        result = sb.toString();
    }catch(Exception e){
        e.printStackTrace();
    }
    return result;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多