【问题标题】:Http Request using java.net.* package使用 java.net.* 包的 Http 请求
【发布时间】:2022-11-28 20:31:28
【问题描述】:

我正在通过 java 包 java.net.* 触发 API 调用 但是,对于 400 及以上的回复,我没有收到回复正文。所以无法弄清楚为什么通话失败。

下面的 sn-p 触发呼叫。

public static String sendPostRequest(String requestUrl, String payload, Map<String, String> requestProperties) {
        StringBuffer jsonString = new StringBuffer();
        try {
            URL url = new URL(requestUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

            connection.setDoInput(true);
            connection.setDoOutput(true);
            connection.setRequestMethod("POST");
            Set<String> keys = requestProperties.keySet();
            for (String property : keys) {
                connection.setRequestProperty(property, requestProperties.get(property));
            }
            OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8);
            writer.write(payload);
            writer.close();
            BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line;
            while ((line = br.readLine()) != null) {
                jsonString.append(line);
            }
            br.close();
            connection.disconnect();
            //  System.out.println("response  " + jsonString.toString());

        } catch (Exception e) {
            log.error("Error for call " + requestUrl);
            log.error(e.getMessage());
        }
        return jsonString.toString();
    }

有什么解决办法吗?

【问题讨论】:

    标签: java httprequest


    【解决方案1】:

    对于状态代码为 400 或更高的响应,您需要使用 connection.getErrorStream()。调用connection.getOutputStream() 会抛出异常。您可以在调用 connection.getOutputStream()connection.getErrorStream() 之前使用 connection.getResponseCode() 来确定状态,从而确定使用这两种方法中的哪一种。

    【讨论】:

      猜你喜欢
      • 2021-03-31
      • 2016-04-23
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2011-12-04
      • 2016-08-06
      相关资源
      最近更新 更多