【问题标题】:Calling Post request without body in java在java中调用没有正文的Post请求
【发布时间】:2020-10-19 23:22:52
【问题描述】:

我有一个不接受任何输入的帖子 API。我必须从 API 获取输出。但它给出了编译错误。

HttpURLConnection connection = null;
String targetUrl="https://idcs-oda-9417f93560b94eb8a2e2a4c9aac9a3ff-t0.data.digitalassistant.oci.oc-test.com/api/v1/bots/"+BotID+"/dynamicEntities/"+dynamicEntityId+"/pushRequests
URL url = new URL(targetUrl);
connection=(HttpURLConnection) url.openConnection();
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
connection.setRequestProperty("Authorization", "Basic aWRjcy1vZGEtOTQxN2Y5MzU2MGI5NGViOGEyZTJhNGM5YWFjOWEzZmYtdDBfQVBQSUQ6MjQ0YWU4ZTItNmY3MS00YWYyLWI1Y2MtOTExMDg5MGQxNDU2");
connection.setRequestProperty("Accept", "application/json");
OutputStream os = connection.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");    
**osw.write();**   //this line is expecting input in parameter
osw.flush();
osw.close();
os.close(); 
connection.connect();

如果我没有在osw.write() 中传递任何值,它会给出编译错误。我该如何解决。

【问题讨论】:

    标签: java api rest web-services httpurlconnection


    【解决方案1】:

    看下面的post调用方法。您需要将输出流添加到 osw.write(),因为它需要一个参数。

    private static void sendPOST() throws IOException {
        URL obj = new URL(POST_URL);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", USER_AGENT);
    
        // For POST only - START
        con.setDoOutput(true);
        OutputStream os = con.getOutputStream();
        os.write(POST_PARAMS.getBytes());
        os.flush();
        os.close();
        // For POST only - END
    
        int responseCode = con.getResponseCode();
        System.out.println("POST Response Code :: " + responseCode);
    
        if (responseCode == HttpURLConnection.HTTP_OK) { //success
            BufferedReader in = new BufferedReader(new InputStreamReader(
                        con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
    
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
    
            // print result
            System.out.println(response.toString());
            } 
        else {
            System.out.println("POST request not worked");
        }
    }
    

    有关上述代码的更多详细信息,请查看here

    【讨论】:

    • 谢谢@Pritam。这可能对我有用。这里的 POST_PARAM 是什么。它给出了编译错误。它是恒定的吗?我没有此 API 的任何参数。
    • 由于您没有任何 post 参数,您可以删除与 POST_PARAM 相关的任何内容。对于write() 方法看这里:docs.oracle.com/javase/7/docs/api/java/io/…
    • 谢谢普里塔姆。 write() 接受参数,所以我声明了一个字符串。字符串数据="";然后将数据传递给 write(data)。没有传递任何东西就会给出编译错误。
    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2020-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2013-05-30
    相关资源
    最近更新 更多