使用HttpComponents获取整个页面的内容

本文介绍如何使用Apache HttpComponents Client 4.0.1来获取指定URL的完整页面内容,并展示了从HTTP响应中读取实体内容的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

commons-httpclient已经不再更新了,

httpcomponents是commons-httpclient后继项目。

本方法的目的是使用httpcomponents-client-4.0.1获取整个页面的内容

稍微修改了一下examples中的ClientAbortMethod

【添加代码已用注释标注,就是读个输入流,也没啥的】

java 写道
/*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* .
*
*/

package org.apache.http.examples.client;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

/**
* This example demonstrates how to abort an HTTP method before its normal completion.
*/
public class MyClientAbortMethod {

public final static void main(String[] args) throws Exception {
HttpClient httpclient = new DefaultHttpClient();

HttpGet httpget = new HttpGet("http://www.apache.org/");

System.out.println("executing request " + httpget.getURI());
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();

System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());

//start 读取整个页面内容
InputStream is = entity.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = in.readLine()) != null) {
buffer.append(line+"\n");
}
//end 读取整个页面内容



System.out.println(buffer.toString());
}
System.out.println("----------------------------------------");

// Do not feel like reading the response body
// Call abort on the request object
httpget.abort();

// When HttpClient instance is no longer needed,
// shut down the connection manager to ensure
// immediate deallocation of all system resources
httpclient.getConnectionManager().shutdown();
}

}


 
Ajax通常用于创建异步Web应用程序,它允许前端通过JavaScript向服务器发送数据而无需刷新整个页面Apache HttpClient是一个强大的Java库,用于处理HTTP客户端通信。下面是如何使用这个库来发送一个HTTP POST请求的基本步骤: 1. **添加依赖**: 首先,你需要在你的项目中引入HttpClient的依赖。如果你的项目使用Maven,可以在pom.xml文件中加入以下片段: ```xml <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.x.y</version> <!-- 更新到最新的稳定版本 --> </dependency> ``` 2. **创建HttpClient实例**: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); ``` 3. **构建HttpPost对象**: ```java PostMethod postMethod = new PostMethod("http://example.com/api/endpoint"); StringEntity entity = new StringEntity(jsonData, ContentType.APPLICATION_JSON); postMethod.setEntity(entity); ``` `jsonData`是你想要发送的JSON数据。 4. **设置头部信息**(如Content-Type等),如果需要的话。 5. **发送请求并获取响应**: ```java HttpResponse httpResponse = httpClient.execute(postMethod); StatusLine statusLine = httpResponse.getStatusLine(); int statusCode = statusLine.getStatusCode(); HttpEntity responseEntity = httpResponse.getEntity(); ``` 6. **处理响应**(读取或解析返回的数据): 7. **关闭资源**: ```java postMethod.releaseConnection(); httpClient.close(); ``` 8. **错误处理**: ``` if (statusCode >= 400) { // 处理错误 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值