龙岗网站建设联系电话,有赞商城官网登录,苏州网站建设网站优化,自己做网站处理图片用什么软件一般使用步骤 使用HttpClient发送请求、接收响应#xff0c;一般需要以下步骤。 HttpGet请求响应的一般步骤#xff1a; 1). 创建HttpClient对象,可以使用HttpClients.createDefault()#xff1b; 2). 如果是无参数的GET请求#xff0c;则直接使用构造方法HttpGet(String u…一般使用步骤 使用HttpClient发送请求、接收响应一般需要以下步骤。 HttpGet请求响应的一般步骤 1). 创建HttpClient对象,可以使用HttpClients.createDefault() 2). 如果是无参数的GET请求则直接使用构造方法HttpGet(String url)创建HttpGet对象即可 如果是带参数GET请求则可以先使用URIBuilder(String url)创建对象再调用addParameter(String param, String value)或setParameter(String param, String value)来设置请求参数并调用build()方法构建一个URI对象。只有构造方法HttpGet(URI uri)来创建HttpGet对象。 3). 创建HttpResponse调用HttpClient对象的execute(HttpUriRequest request)发送请求该方法返回一个HttpResponse。调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头调用HttpResponse的getEntity()方法可获取HttpEntity对象该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。通过调用getStatusLine().getStatusCode()可以获取响应状态码。 4). 释放连接。
HttpPost请求响应的一般步骤 1). 创建HttpClient对象,可以使用HttpClients.createDefault() 2). 如果是无参数的GET请求则直接使用构造方法HttpPost(String url)创建HttpPost对象即可 如果是带参数POST请求先构建HttpEntity对象并设置请求参数然后调用setEntity(HttpEntity entity)创建HttpPost对象。 3). 创建HttpResponse调用HttpClient对象的execute(HttpUriRequest request)发送请求该方法返回一个HttpResponse。调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头调用HttpResponse的getEntity()方法可获取HttpEntity对象该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。通过调用getStatusLine().getStatusCode()可以获取响应状态码。 4). 释放连接。
官方文档中的示例
//1.获得一个httpclient对象
CloseableHttpClient httpclient HttpClients.createDefault();
//2.生成一个get请求
HttpGet httpget new HttpGet(http://localhost/);
//3.执行get请求并返回结果
CloseableHttpResponse response httpclient.execute(httpget);
try {//4.处理结果
} finally {response.close();
}
实例代码实战
构建一个Maven项目引入如下依赖 dependencygroupIdorg.apache.httpcomponents/groupIdartifactIdhttpclient/artifactIdversion4.3.5/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.7/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-io/artifactIdversion1.3.2/version/dependency
实例1普通的无参数GET请求
打开一个url抓取响应结果输出成html文件
实例2执行带参数的GET请求
模拟使用百度搜索关键字java,并保存搜索结果为html文件
import java.io.File;
import java.net.URI;
import org.apache.commons.io.FileUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
/*** 带参数的GET请求* 两种方式* 1.直接将参数拼接到url后面 如?wdjava* 2.使用URI的方法设置参数 setParameter(wd, java)*/
public class DoGETParam {public static void main(String[] args) throws Exception {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();// 定义请求的参数URI uri new URIBuilder(http://www.baidu.com/s).setParameter(wd, java).build();// 创建http GET请求HttpGet httpGet new HttpGet(uri);//response 对象CloseableHttpResponse response null;try {// 执行http get请求response httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {String content EntityUtils.toString(response.getEntity(), UTF-8);//内容写入文件FileUtils.writeStringToFile(new File(E:\\devtest\\baidu-param.html), content, UTF-8);System.out.println(内容长度content.length());}} finally {if (response ! null) {response.close();}httpclient.close();}}
}
实例3执行普通的POST请求
无参数的POST请求并设置Header来伪装浏览器请求 import org.apache.commons.io.FileUtils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;import java.io.File;/*** 常规post请求* 可以设置Header来伪装浏览器请求*/
public class DoPOST {public static void main(String[] args) throws Exception {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();// 创建http POST请求HttpPost httpPost new HttpPost(http://www.oschina.net/);//伪装浏览器请求httpPost.setHeader(User-Agent, Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36);CloseableHttpResponse response null;try {// 执行请求response httpclient.execute(httpPost);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {String content EntityUtils.toString(response.getEntity(), UTF-8);//内容写入文件FileUtils.writeStringToFile(new File(E:\\devtest\\oschina.html), content, UTF-8);System.out.println(内容长度content.length());}} finally {if (response ! null) {response.close();}httpclient.close();}}
} 实例4执行带参数的POST请求
模拟开源中国检索java并伪装浏览器请求输出响应结果为html文件
import java.io.File;
import java.util.ArrayList;
import java.util.List;import org.apache.commons.io.FileUtils;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;/*** 带有参数的Post请求* NameValuePair*/
public class DoPOSTParam {public static void main(String[] args) throws Exception {// 创建Httpclient对象CloseableHttpClient httpclient HttpClients.createDefault();// 创建http POST请求HttpPost httpPost new HttpPost(http://www.oschina.net/search);// 设置2个post参数一个是scope、一个是qListNameValuePair parameters new ArrayListNameValuePair(0);parameters.add(new BasicNameValuePair(scope, project));parameters.add(new BasicNameValuePair(q, java));// 构造一个form表单式的实体UrlEncodedFormEntity formEntity new UrlEncodedFormEntity(parameters);// 将请求实体设置到httpPost对象中httpPost.setEntity(formEntity);//伪装浏览器httpPost.setHeader(User-Agent,Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36);CloseableHttpResponse response null;try {// 执行请求response httpclient.execute(httpPost);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() 200) {String content EntityUtils.toString(response.getEntity(), UTF-8);//内容写入文件FileUtils.writeStringToFile(new File(E:\\devtest\\oschina-param.html), content, UTF-8);System.out.println(内容长度content.length());}} finally {if (response ! null) {response.close();}httpclient.close();}}
}