因为工作需要,想研究一下execute执行的逻辑。
在这一行调用execute:
response = getHttpClient().execute(get);
getHttpClient的实现:
private HttpClient getHttpClient() {
if (this.m_httpClient == null) {
this.m_httpClient = HttpClientBuilder.create().build();
}
return this.m_httpClient;
}
我在代码里声明的HttpClient只是一个接口,
实现类是InternalHttpClient。
首先根据传入的请求决定出目标-target host
投递到RedirectExec执行。
后者又投递到RetryExec执行。
收到307重定向:
redirectsEnabled标志位为true:
再看当前的请求确实被redirect了吗?
original url:
我的后台服务器返回的307,落到了分支HttpStatus.SC_TEMPORARY_REDIRECT处:
看来Apache的库认为只有HEAD和GET才能被redirect:
重定向最大次数:50
准备重试了:
要获取更多Jerry的原创文章,请关注公众号"汪子熙"。
相关推荐
- 在Eclipse 中,你可以通过"File" -> "Import" -> "Existing Projects into Workspace" 导入Apache HttpClient 4.5 的源代码项目。 - 将下载的压缩包解压,然后在导入对话框中选择解压后的目录,确保"Copy ...
在这个场景下,"使用HttpClient调试android接口-通用方法"的标题表明我们将讨论如何使用HttpClient来调试Android应用中的API接口。下面,我们将深入探讨HttpClient的基础知识、调试技巧以及如何封装通用方法。 1. *...
接着,我们通过HttpClient的execute方法发送请求并获取响应。这个例子展示了HttpClient库的基本用法,实际应用中可能需要处理更复杂的场景,如设置请求头、处理响应内容、处理异常等。 总的来说,Apache HttpClient...
5. **执行请求**:调用HttpClient对象的execute方法发送请求。 6. **处理响应**:获取HttpResponse对象,读取状态码,使用EntityUtils类处理响应实体,如读取内容或写入文件。 7. **关闭连接**:在完成操作后,...
HttpClient使用它来记录执行过程中的一些信息,方便调试和问题定位。 三、使用HttpClient进行POST和GET 1. GET请求:通过HttpClient,我们可以轻松创建GET请求。首先,创建一个`HttpGet`对象,设置请求的URL,然后...
4. 执行请求:通过HttpClient的execute()方法发送请求。 5. 处理响应:使用HttpResponse获取响应码、头信息和实体内容。 四、HTTP抓包 在开发和调试过程中,使用HttpClient进行抓包是常见需求。你可以通过设置拦截...
接着,通过`execute`方法发送请求并获取`HttpResponse`对象,从中解析响应数据。整个过程可以通过`commons-logging`库进行日志记录,以便于问题排查。 总之,`HTTPclient所需的jar`文件集合是实现Java中高效、灵活...
3. 执行请求:使用HttpClient的execute方法执行请求,并获取HttpResponse对象。 ```java HttpResponse response = httpClient.execute(httpGet); ``` 4. 处理响应:从HttpResponse中获取HttpEntity,读取响应数据。...
5. 执行请求:通过HttpClient的`execute`方法发送请求,并获取响应,`CloseableHttpResponse response = httpClient.execute(httpPost);` 6. 处理响应:检查响应状态码,读取响应内容,如`StatusLine statusLine = ...
5. **执行请求**:通过HttpClient的`execute`方法发送请求,并获取响应: ```java CloseableHttpResponse response = httpClient.execute(httpGet); ``` 6. **处理响应**:从`response`中读取状态码、响应头和...
1. **执行流程**:从 `HttpClient.execute()` 方法开始,通过 `HttpRequestExecutor.execute()` 将请求发送到服务器,并接收响应。 2. **连接管理**:`PoolingHttpClientConnectionManager` 负责连接的创建、复用和...
例如,发送GET请求可以通过创建HttpGet对象,设置URL并执行execute方法来完成。发送POST请求则需要使用HttpPost对象,设置请求头部和实体内容。对于OPTIONS请求,HttpClient提供了OptionsMethod类,调用其...
`HttpClientTest`工具类中的`httpGetRedirect`方法展示了如何使用Apache HttpClient库执行HTTP GET请求,并处理响应。通过该方法,我们可以轻松地与Web服务进行交互,这对于许多应用场景都非常有用,如数据抓取、API...
3. **执行请求**:调用HttpClient的execute方法发送请求。 4. **处理响应**:获取HttpResponse,并解析其状态码、头部和主体。 5. **关闭资源**:使用完毕后,记得关闭连接以释放系统资源。 总的来说,HttpClient...
3. 执行请求:通过HttpClient对象的execute方法发送请求,获取HttpResponse。 4. 处理响应:解析HttpResponse,获取状态码、响应头和响应体。 四、连接管理和池化 HttpClient 4.5提供了...
- **基本使用**:创建HttpClient实例,通过HttpRequestBase创建请求对象,设置请求方法、URL、头信息等,然后使用HttpClient的execute方法发送请求并获取HttpResponse。 3. **文档资源**: - **英文文档**:...
Java HttpClient是Apache软件基金会的Apache HTTP Components项目中的一个核心组件,它提供了一个强大的、高度可定制的客户端HTTP通信API。这个工具广泛应用于Java开发者中,用于执行HTTP请求,获取响应,处理各种...
3. 使用`HttpClient`执行请求,通过`execute(HttpRequest)`方法发送请求。 4. 处理`HttpResponse`,获取状态码、头部信息和响应体。 5. 关闭连接,释放资源。 对于解析HTML,HttpClient本身并不提供HTML解析功能,...