HttpClient

HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性,它不仅使客户端发送Http请求变得容易,而且也方便开发人员测试接口(基于Http协议的),提高了开发的效率,也方便提高代码的健壮性。

使用方法

使用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. 释放连接。无论执行方法是否成功,都必须释放连接

post请求1

package a;  
   
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 First {  
    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://cnivi.com.cn/login");  
        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("请求失败");  
        }  
    }  
   
} 

  其他代码见 https://blog.csdn.net/w372426096/article/details/82713315

post请求2

/** 
  * post方式提交表单(模拟用户登录请求) 
  */   
 public void postForm() {   
       
    String url = "http://localhost:8080/Java_WS_Server/rest/surpolicy/sendXml"; 
       
     // 创建默认的httpClient实例.     
    HttpClient client = new DefaultHttpClient(); 
     // 创建httppost     
     HttpPost httppost = new HttpPost(url);   
     // 创建参数队列     
     List<NameValuePair> formparams = new ArrayList<NameValuePair>();   
     formparams.add(new BasicNameValuePair("username", "admin"));   
     formparams.add(new BasicNameValuePair("password", "123456"));   
     UrlEncodedFormEntity uefEntity;   
     try {   
         uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8"); //编码  
         httppost.setEntity(uefEntity);   
         System.out.println("executing request " + httppost.getURI());   
         HttpResponse response = client.execute(httppost);   
Header[] headers = response.getAllHeaders(); 
for(int i=0; i<headers.length; i++){ 
    System.out.println(headers[i].getName()); 
} 
   
         try {   
             HttpEntity entity = response.getEntity();   
             if (entity != null) {   
                 System.out.println("--------------------------------------");   
                 System.out.println("Response content: " + EntityUtils.toString(entity, "UTF-8"));  //编码 
                 System.out.println("--------------------------------------");   
             }   
         } finally {   
   
         }   
     } catch (ClientProtocolException e) {   
         e.printStackTrace();   
     } catch (UnsupportedEncodingException e1) {   
         e1.printStackTrace();   
     } catch (IOException e) {   
         e.printStackTrace();   
     } finally {   
   
     }   
 }

get请求

/** 
 * 发送 get请求 
 */   
public void get() {   
    try {   
        HttpClient client = new DefaultHttpClient(); 
        // 创建httpget.     
        HttpGet httpget = new HttpGet("http://www.baidu.com/");   
        System.out.println("executing request " + httpget.getURI());   
        // 执行get请求.     
        HttpResponse response = client.execute(httpget);   
        try {   
            // 获取响应实体     
            HttpEntity entity = response.getEntity();   
            System.out.println("--------------------------------------");   
            // 打印响应状态     
            System.out.println(response.getStatusLine());   
            if (entity != null) {   
                // 打印响应内容长度     
                System.out.println("Response content length: " + entity.getContentLength());   
                // 打印响应内容     
                System.out.println("Response content: " + EntityUtils.toString(entity));   
            }   
            System.out.println("------------------------------------");   
        } finally {   
        }   
    } catch (ClientProtocolException e) {   
        e.printStackTrace();   
    }  catch (IOException e) {   
        e.printStackTrace();   
    } finally {}   
}

  

  

原文地址:https://www.cnblogs.com/lingcheng7777/p/11319208.html