gpt4 book ai didi

javax.net.ssl.HttpsURLConnection 何时触发请求

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:26:03 25 4
gpt4 key购买 nike

我正在调试一些应该调用网络服务并返回响应的方法。

已经在这些线程中找到了很多关于 http(s) 请求的信息:

[ Can you explain the HttpURLConnection connection process?

[ Using java.net.URLConnection to fire and handle HTTP requests

还有一点我不清楚:

是否会在每次调用此方法之一时发送请求:

连接、getInputStream、getOutputStream、getResponseCode 或 getResponseMessage

还是仅在其中一种方法首次出现时触发?


在我的特殊情况下,此代码片段会多次触发请求吗?

URL url = new URL(webservice);
conn = (HttpsURLConnection) url.openConnection();
conn.setHostnameVerifier(new HostnameVerifier() {//blabla});

conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/xml");

// As far as I understood : request is still not fired there.

System.out.println("callWebService : calling conn.getResponseCode()");
if (conn.getResponseCode() == 400 //Bad Request
|| conn.getResponseCode() == 403 //Forbidden
|| conn.getResponseCode() == 404 //Not Found
|| conn.getResponseCode() == 500 //Internal Server Error
|| conn.getResponseCode() == 501 //Not Implemented
|| conn.getResponseCode() == 502 //Bad Gateway ou Proxy Error
|| conn.getResponseCode() == 503 //Service Unavailable
|| conn.getResponseCode() == 504 //Gateway Time-out
|| conn.getResponseCode() == 505 //HTTP Version not supported)
{
//handle wrong response
}else{
System.out.println("callWebService : received correct responseCode ");
isr = new InputStreamReader(conn.getInputStream());
br = new BufferedReader(isr);
output = br.readLine();
return output;
}

//close operations handled in finally blocks

是的,关于不使用本地 int 来存储响应代码、仅检查这些可能值中的几个等等,已经有很多要说的了。无论如何我都会对此进行重构,我只对了解是否可以多次触发此请求感兴趣。

最佳答案

在这种情况下,您可能需要检查源代码。大多数 JVM 类都包含源,java.net.HttpURLConnection 也包含。

在方法 getResponseCode() 的开头有这个片段(作为 JDK 1.8_71)

/*
* We're got the response code already
*/
if (responseCode != -1) {
return responseCode;
}

所以它被缓存了。如果response还是默认值-1,则向服务器执行请求。但由于此方法的 JavaDoc 中未描述此行为,因此我不会依赖它并使用自己的整数变量。

合资企业

关于javax.net.ssl.HttpsURLConnection 何时触发请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40236963/

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