POST 后使用 HttpClient 执行 GET 时出现异常

     2023-03-31     56

关键词:

【中文标题】POST 后使用 HttpClient 执行 GET 时出现异常【英文标题】:Exception when using HttpClient to execute GET after POST 【发布时间】:2011-01-15 13:59:27 【问题描述】:

我使用 Apache 的 DefaultHttpClient()execute(HttpPost post) 方法来创建一个 http POST。 有了这个我登录到一个网站。 然后我想用同一个客户端制作一个HttpGet。 但是当我这样做时,我得到一个例外:

线程“main”java.lang.IllegalStateException 中的异常:SingleClientConnManager 的使用无效:连接仍然分配。

我不确定为什么会发生这种情况。任何帮助将不胜感激。

public static void main(String[] args) throws Exception 

    // prepare post method
    HttpPost post = new HttpPost("http://epaper02.niedersachsen.com/epaper/index_GT_neu.html");

    // add parameters to the post method
    List <NameValuePair> parameters = new ArrayList <NameValuePair>();
    parameters.add(new BasicNameValuePair("username", "test"));
    parameters.add(new BasicNameValuePair("passwort", "test")); 

    UrlEncodedFormEntity sendentity = new UrlEncodedFormEntity(parameters, HTTP.UTF_8);
    post.setEntity(sendentity); 

    // create the client and execute the post method
    HttpClient client = new DefaultHttpClient();
    HttpResponse postResponse = client.execute(post);
    //Use same client to make GET (This is where exception occurs)
    HttpGet httpget = new HttpGet(PDF_URL);
    HttpContext context = new BasicHttpContext();

    HttpResponse getResponse = client.execute(httpget, context);



    // retrieve the output and display it in console
    System.out.print(convertInputStreamToString(postResponse.getEntity().getContent()));
    client.getConnectionManager().shutdown();



【问题讨论】:

见:***.com/questions/4612573/… 【参考方案1】:

这是因为在 POST 之后,连接管理器仍在保持 POST 响应连接。您需要先发布它,然后才能将客户端用于其他用途。

这应该可行:

HttpResponse postResponse = client.execute(post);
EntityUtils.consume(postResponse.getEntity();

然后,您可以执行 GET。

【讨论】:

非常感谢!为 Exception 做到了!

使用 HttpClient 和 C# 在 post 请求中发送 json

】使用HttpClient和C#在post请求中发送json【英文标题】:SendajsononapostrequestwithHttpClientandC#【发布时间】:2019-05-2716:50:49【问题描述】:我的代码有问题,我的目标是通过API发送修改,所以我在HttpClient上执行request。usingSystem;usingSystem... 查看详情

HttpClient.execute 抛出 OutOfMemoryError

】HttpClient.execute抛出OutOfMemoryError【英文标题】:HttpClient.executethrowingOutOfMemoryError【发布时间】:2012-12-1711:23:42【问题描述】:我有一个Android应用程序,它使用ByteArrayEntity对象将JSONObject作为实体发布。如下所示:post.setEntity(newByt... 查看详情

Android 项目使用 httpclient --> http.client (apache), post/get 方法

】Android项目使用httpclient-->http.client(apache),post/get方法【英文标题】:Androidprojectusinghttpclient-->http.client(apache),post/getmethod【发布时间】:2009-05-1709:22:17【问题描述】:我正在为一个android项目执行Get和Post方法,我需要将HttpClient... 查看详情

httpclient使用post方法提交数据后服务端如何获得这些参数

参考技术AASP段还是照常,用request.form("xx")的方式接收,关键是用Ajax方式提交数据的时候,对传递的值进行编码,和设置文件头,下面是一个ajax用Post方式提交数据的函数,你参考下:functionPost()varname=document.form1.name.value;v... 查看详情

在 Angular 7 中,为啥即使只订阅一次 HttpClient.post 也会执行两次?

】在Angular7中,为啥即使只订阅一次HttpClient.post也会执行两次?【英文标题】:InAngular7,whyHttpClient.postisgettingexecutedtwiceevenifsubscribedonlyonce?在Angular7中,为什么即使只订阅一次HttpClient.post也会执行两次?【发布时间】:2019-10-1705:08:... 查看详情

httpclient中post请求重定向

背景:使用httpclient的post请求进行登录,需要重定向登录,请求重定向后的地址在httpclient中post请求不像get请求自己可以重定向,实现方式是判断post请求返回码是否是302,如果是那么就获取传递过来的Location的地址,进行拼接,... 查看详情

尝试在 Java 中使用 HttpClient 发送 HTTP Post GraphQL 查询时出现 HTTP 400

】尝试在Java中使用HttpClient发送HTTPPostGraphQL查询时出现HTTP400【英文标题】:HTTP400WhenTryingtoSendHTTPPostGraphQLQueryusingHttpClientinJava【发布时间】:2018-10-1807:07:00【问题描述】:对外部GraphQL服务器进行后查询,该服务器在PostmanPro设置中... 查看详情

使用 HttpClient 的简单 POST

】使用HttpClient的简单POST【英文标题】:SimplePOSTwithHttpClient【发布时间】:2018-11-3018:33:11【问题描述】:我有两个ASP.NETCore2.1应用程序,我正在尝试使用HttpClient从一个应用程序到另一个应用程序进行简单的POST调用。由于某种原因... 查看详情

httpclient使用指南——post请求

参考技术A1.创建一个请求客户端:HttpClients.createDefault(),用来实际发起调用post请求,可以类比成浏览器。2.组装表单请求数据:因需要传递文件,所以通过MultipartEntityBuilder构造器组装表单实体请求数据。2.1设置mode为HttpMultipartMod... 查看详情

使用 POST 方法将 HttpWebRequest 转换为 HttpClient

】使用POST方法将HttpWebRequest转换为HttpClient【英文标题】:ConvertHttpWebRequesttoHttpClientwithPOSTmethod【发布时间】:2020-10-1711:17:04【问题描述】:我尝试将HttpWebRequest转换为HttpClient但没有成功。有人可以帮帮我吗?这是我使用HttpWebReque... 查看详情

使用 Microsoft.HttpClient 和 HttpContentExtensions 的通用 POST 请求

】使用Microsoft.HttpClient和HttpContentExtensions的通用POST请求【英文标题】:GenericPOSTrequestusingMicrosoft.HttpClientandHttpContentExtensions【发布时间】:2011-01-2016:46:51【问题描述】:我正在使用WCFRESTStarterKit中提供的非常棒的HttpClient。我有以... 查看详情

httpclient使用post方法传输文件(代码片段)

HttpClient使用Post方法传输文件一、依赖二、代码一、依赖httpmime-4.5.13.jarhttpcore-4.4.15.jarhttpclient-4.5.13.jarfastjson-1.2.15.jarcommons-logging-1.1.1.jarcommons-codec-1.15.jar二、代码packagecom;importorg.apache.http.Http 查看详情

httpclient使用post方法传输文件(代码片段)

HttpClient使用Post方法传输文件一、依赖二、代码一、依赖httpmime-4.5.13.jarhttpcore-4.4.15.jarhttpclient-4.5.13.jarfastjson-1.2.15.jarcommons-logging-1.1.1.jarcommons-codec-1.15.jar二、代码packagecom;importorg.apache.http.Http 查看详情

在 httpClient 中使用 POST 时如何确保数据被加密

】在httpClient中使用POST时如何确保数据被加密【英文标题】:HowtoassurethatdatagetsencryptedwhenusingPOSTinhttpClient【发布时间】:2018-12-1310:45:00【问题描述】:我正在使用VS2017和Xamarin制作应用程序。我计划使用httpClient(Android)、PostAsync()将... 查看详情

httpclient的get请求(post)请求

一。不带参数的GET请求//创建Httpclient对象CloseableHttpClienthttpclient=HttpClients.createDefault();//创建httpGET请求HttpGethttpGet=newHttpGet("http://www.baidu.com/");CloseableHttpResponseresponse=null;try//执行请求respo 查看详情

httpclient的post请求数据

...JDK自带的URLConnection。在项目组人员的推荐下,开始使用HttpClient。HttpClient简介:HttpClient是ApacheJakartaCommon下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建... 查看详情

HttpClient POST 请求中的自定义标头不起作用

】HttpClientPOST请求中的自定义标头不起作用【英文标题】:CustomheaderinHttpClientPOSTrequestnotworking【发布时间】:2020-01-2715:32:54【问题描述】:我在使用HttpClient时尝试发送POST请求。当我运行代码时,我得到了未经授权的响应。但我... 查看详情

httpclient入门

HttpClient是一个实现了Http协议的功能强大的编程工具包。要使用HttpClient,通常需要以下几部:1、常见一个HttpClient实例2、创建一个get或者post方法3、告诉HttpClient去执行获取的方法4、读取服务器的响应5、释放连接6、处理响应的内... 查看详情