6

我使用 apache commons http 客户端每秒通过 post 发送数据,有没有办法让以下代码更有效率?我知道 http 是无状态的,但是我可以做些什么来改进,因为在这种情况下基本 url 总是相同的(只有参数值改变。

私人无效发送数据(字符串){
      尝试
         {
              HttpClient 客户端 = getHttpClient();


              HttpPost 方法 = new HttpPost("http://192.168.1.100:8080/myapp");
              System.err.println("发送到服务器"+s);
              List formparams = new ArrayList();
              formparams.add(new BasicNameValuePair("packet", s));

              UrlEncodedFormEntity 实体 = new UrlEncodedFormEntity(formparams, "UTF-8");
              方法.setEntity(实体);

              HttpResponse resp=client.execute(method);
              字符串 res = EntityUtils.toString(resp.getEntity());
              System.out.println(res);

         }
         捕获(异常 e)
         {
              e.printStackTrace();

         }
    }
 私有 HttpClient getHttpClient() {
  如果(httpClient==null){
   httpClient = new DefaultHttpClient();
  }
  返回http客户端;
 }
4

2 回答 2

3

使用多线程连接管理器,

http://hc.apache.org/httpclient-3.x/threading.html#MultiThreadedHttpConnectionManager

这将提高保持活动状态并提高连接每秒就绪的机会,因此您不必重新建立 TCP 连接。

于 2010-06-15T19:29:28.273 回答
1

如果您需要每秒发送请求并获得响应,那么是的,这就是您所能做的。但是,是的,它将使用大量资源。

另一种研究方法是Comet方法,其中 HTTP 连接对服务器保持开放状态,并通过该连接逐渐发送信息。 这是一篇带有示例的有趣文章。

于 2010-06-15T19:03:16.620 回答