gpt4 book ai didi

java - 我必须从服务器获取响应码吗?

转载 作者:行者123 更新时间:2023-12-02 03:11:49 26 4
gpt4 key购买 nike

我有以下代码

URL url = new URL(pushURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/restService");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
if(conn.getResponseCode() == 200){
logger.debug("Success");
} else {
logger.debug("Time out set for 30 seconds");
}
String input = writer.getBuffer().toString();
OutputStream os = conn.getOutputStream();

如果我对服务器的响应不感兴趣,我可以删除以下代码吗?

 if(conn.getResponseCode() == 200){
logger.debug("Success");
} else {
logger.debug("Time out set for 30 seconds");
}

考虑到代码本身会导致 java.net.ProtocolException,是否有办法仍然获取服务器响应并执行 conn.getOutputStream() ;?按什么顺序?除了明显的报告问题之外,未获得答复的后果是什么?

最佳答案

问题是,一旦您收到响应代码,您就已经发送了您的帖子。在您的代码中,在获得响应之前,您不会向输出流写入任何内容。因此,您实际上并没有通过帖子发送任何内容(只是 header 信息),获取响应代码,然后尝试再次写入,这是不允许的。您需要做的是先写入输出流,然后获取响应代码,如下所示:

public static void main(String[] args) throws IOException {
URL url = new URL(pushURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/restService");
conn.setConnectTimeout(30000);
conn.setReadTimeout(30000);
String input = writer.getBuffer().toString();
OutputStream os = conn.getOutputStream();
for (char c : input.toCharArray()) {
os.write(c);
}
os.close();

if(conn.getResponseCode() == 200){
System.out.println("Success");
} else {
System.out.println("Time out set for 30 seconds");
}
}

这是一个小教程:

Reading and Writing Tutorial

关于java - 我必须从服务器获取响应码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40916787/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com