当前位置: 首页 > 面试题库 >

HttpClientError:目标服务器无法响应

衡安晏
2023-03-14
问题内容

我正在尝试使用http客户端通过PoolingClientConnectionManager为单个主机设置最大连接来访问服务器

 //Code that inilizes my connection mananger and http client

HttpParams httpParam = httpclient.getParams();
HttpConnectionParams.setSoTimeout(httpParam,SOCKET_TIMEOUT);

    HttpConnectionParams.setConnectionTimeout(httpParam, CONN_TIMEOUT);

    httpclient.setParams(httpParam);

    //Run a thread which closes Expired connections
    new ConnectionManager(connManager).start();

        //Code that executes my request 
    HttpPost httpPost = new HttpPost(url);
            HttpEntity httpEntity = new StringEntity(request, "UTF-8");
    httpPost.setEntity(httpEntity);

    Header acceptEncoding = new BasicHeader("Accept-Encoding", "gzip,deflate");
    httpPost.setHeader(acceptEncoding);

    if(contenttype != null && !contenttype.equals("")){
        Header contentType = new BasicHeader("Content-Type", contenttype);
        httpPost.setHeader(contentType);
    }
            InputStream inputStream = null;
    LOG.info(dataSource + URL + url + REQUEST + request);

    HttpResponse response = httpclient.execute(httpPost);

那就是我们使用连接池来实现http持久性。

我们偶尔会收到此错误:

The target server failed to respond
org.apache.http.NoHttpResponseException: The target server failed to respond
        at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:95)
        at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:62)
        at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:254)
        at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:289)
        at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:252)
        at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:191)
        at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:300)
        at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:127)
        at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:517)
        at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)

有谁知道如何解决这个问题?

我们也将关闭空闲连接。

可以一些请帮忙。

http://hc.apache.org/httpcomponents-client-
ga/tutorial/html/connmgmt.html


问题答案:

可能是HttpClient中的错误。

如果您使用的是HttpClient 4.4,请尝试升级到4.4.1。

如果您想了解更多信息,请查看此链接。

如果您无法升级,则以下链接可能会有所帮助。

http://www.nuxeo.com/blog/using-httpclient-properly-avoid-closewait-tcp-
connections/

祝好运!



 类似资料:
  • 问题内容: 我正在使用apache http客户端来测试我的WS。我已经在球衣上写了一个WS。该WS的URL是 用URL调用这个WS我写了一个方法如下 现在,当我运行程序并将URL传递给此函数时,我在行中得到了异常 异常如下 现在,如果我使用WS网址并使用任何浏览器访问它,我都会得到预期的结果,但我想知道我的Apache HTTP客户端代码出了什么问题。 问题答案: 我从这里浏览了链接,并得到以下

  • 问题内容: 我正在尝试使用SSDT将其发布到Azure中的SQL Server数据库。这样做时,我看到以下错误: 无法连接到主服务器或目标服务器“ DATABASE_NAME”。主服务器或目标服务器“ DATABASE_NAME”中的用户必须具有相同的密码。 忽略错误中将数据库名称作为服务器名称列出的事实,我不确定如何解决。指定目标数据库后,就可以成功测试连接。我也可以使用相同的凭据通过SSMS连

  • 我正在web应用程序上使用JMeter5.2运行负载测试。当我运行线程组时,即使使用超过500个线程,我也会在用户中配置jmeter:in。我设置的属性:httpclient4.retrycount=1 hc.parameters.file=hc.parameters 在hc.parameters中,我设置了: http . connection . stale check $ Boolean =

  • 我正在尝试上传一个xml文件。当使用MultipartEntityBuilder将二进制格式的文件添加到HttpEntity时,我收到以下错误 我已经通过了链接 https://www.baeldung.com/httpclient-multipart-upload 我的理解是,该文件不被接受,因为http实体无法发送MultipartEntityBuilder,但我可能错了。

  • 我正在尝试创建一个todo-list应用程序,并在每种类型的请求上与邮递员进行检查。GET和POST请求工作正常。但PUT和DELETE没有按预期工作。 正如预期的意思:它不显示404,也不显示结果,而是显示一个错误,即不能得到任何响应。 下面是我的put和delete代码: 现在,我不知道是不是虫子什么的。