HttpClient使用简介说明

java 文章 2022-07-22 15:20 0 全屏看文

转自:

http://www.java265.com/JavaCourse/202204/2933.html

下文笔者将采用最简单的示例讲述HttpClient的使用,如下所示


HttpClient的使用流程

1. 创建HttpClient对象

2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象

3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HttpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数

4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,
    该方法返回一个HttpResponse

5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头
   调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容 
   程序可通过该对象获取服务器的响应内容

6. 释放连接。无论执行方法是否成功,都必须释放连接

HttpClient涉及jar包

commons-cli-1.2.jar  
commons-codec-1.9.jar  
commons-logging-1.2.jar  
fluent-hc-4.5.1.jar  
httpclient-4.5.1.jar  
httpclient-cache-4.5.1.jar  
httpclient-win-4.5.1.jar  
httpcore-4.4.3.jar  
httpcore-ab-4.4.3.jar  
httpcore-nio-4.4.3.jar  
httpmime-4.5.1.jar  
jna-4.1.0.jar  
jna-platform-4.1.0.jar

HttpClient示例

package com.java265;  
   
import java.io.FileInputStream;  
import java.io.IOException;  
import java.util.ArrayList;  
import java.util.List;  
import java.util.Properties;  
   
import org.apache.http.HttpEntity;  
import org.apache.http.HttpResponse;  
import org.apache.http.NameValuePair;  
import org.apache.http.client.HttpClient;  
import org.apache.http.client.config.RequestConfig;  
import org.apache.http.client.entity.UrlEncodedFormEntity;  
import org.apache.http.client.methods.HttpPost;  
import org.apache.http.impl.client.DefaultHttpClient;  
import org.apache.http.message.BasicNameValuePair;  
import org.apache.http.util.EntityUtils;  
   
public class HttpClientTest {  
    public static void main(String[] args) throws Exception{  
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();  
        formparams.add(new BasicNameValuePair("account", ""));  
        formparams.add(new BasicNameValuePair("password", ""));  
        HttpEntity reqEntity = new UrlEncodedFormEntity(formparams, "utf-8");  
    
        RequestConfig requestConfig = RequestConfig.custom()  
        .setConnectTimeout(5000)//一、连接超时:connectionTimeout-->指的是连接一个url的连接等待时间  
   .setSocketTimeout(5000)// 二、读取数据超时:SocketTimeout-->指的是连接上一个url,获取response的返回等待时间  
   .setConnectionRequestTimeout(5000)  
   .build();  
    
        HttpClient client = new DefaultHttpClient();  
        HttpPost post = new HttpPost("http://java265.com/index.html");  
        post.setEntity(reqEntity);  
        post.setConfig(requestConfig);  
        HttpResponse response = client.execute(post);  
    
        if (response.getStatusLine().getStatusCode() == 200) {  
            HttpEntity resEntity = response.getEntity();  
            String message = EntityUtils.toString(resEntity, "utf-8");  
            System.out.println(message);  
        } else {  
            System.out.println("请求失败");  
        }  
    }  
   
}
-EOF-