问题描述
首先,我很抱歉,因为我几乎可以肯定这个问题是重复的。我有一个非常简单/基本的问题,我确定肯定在某个地方得到了回答……但我似乎在任何地方都找不到答案:)
我正在开发一个以批处理模式通过 HTTP 向服务器发送请求的应用程序。该应用程序在夜间执行,在 6-8 小时内每小时可能发送大约 100 万个请求。这些不是网络请求,来自服务器的响应将是一个 JSON 字符串。每个请求都发送到相同的服务器/端口,但每个请求可以有不同的参数。
我的问题是如何只创建一次连接,但在每次调用/执行时传递不同的参数。我在网上看过 How to use java.net.URLConnection to fire and handle HTTP requests? 和许多教程,但我不太明白如何满足我的特殊需求。我还查看了 HTTP URLConnection 和 URLEncoder 的 Java 文档,但我找不到一种方法来完成我需要使用的任何内容。
我的代码是:
//Build query string
String url = "http://example.com:5000/someScript?foo=bar&ya=hoo";
//Open a connection
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
//send an HTTP GET request and receive back a response
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
//... do something with the response
虽然这行得通,但我发现 (HttpURLConnection) obj.openConnection()
行的平均值约为。每次调用需要 8500 万纳秒。在 6 个小时的时间里,这加起来相当多。这不是阻止程序,但我仍然非常希望提高性能。
理想情况下,我想执行以下操作:
//URL of service
String url = "http://example.com:5000/someScript?";
//Open a connection
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
//set query parameter -- THIS IS NOT A REAL METHOD OF COURSE
con.setQueryParameter("foo=bar&ya=hoo");
//send an HTTP GET request and receive back a response
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
//... do something with the response
//set query parameter -- THIS IS NOT A REAL METHOD OF COURSE
con.setQueryParameter("foo=blah&ya=nope");
//send an HTTP GET request and receive back a response
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
//... do something with the response
等等等等。我希望我的问题足够清楚。任何帮助将不胜感激。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)