Java-處理POST-MAN請求HttpClient的使用(Get請求中的Cookie、Header、與參數的處理)

1、HttpClient模擬一個get請求的Demo

<dependency>
	<groupId>org.apache.httpcomponents</groupId>
	<artifactId>httpclient</artifactId>
	<version>4.5.3</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.0</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.0</version>
</dependency>

2、測試一:代碼實現 模擬baidu的Get請求 

 

package cn.Demo.HttpClient;

import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.testng.annotations.Test;
/**
 * HttpClient get請求模擬請求baidu獲取返回值
 * */
public class GetDemo {
	@Test
	public void baiduReturn() throws Exception, IOException{
		//創建Get對象 請求URL要寫全 否則會報Host的異常
		HttpGet get = new HttpGet("http://www.baidu.com");
		//創建get方法的執行對象
		//HttpClient client = new DefaultHttpClient();
        	// 創建get方法的執行對象 HttpClient4.X之後是這樣創建client對象的
		CloseableHttpClient client = HttpClients.createDefault();
		//獲取response對象
		HttpResponse response = client.execute(get);
		//將response對象轉換成String類型
		String responseStr = EntityUtils.toString(response.getEntity(),"utf-8");
		System.out.println(responseStr);
	}
}

查看打印 可以看到response的html返回頁全部都打印出來了 :

 3、測試二:獲取Cookies信息

3.1、編寫Test.json文件(POST_MAN導出的JSON文件)

實際這是兩個接口 /GetDemo/withCookies接口是獲取Cookies,/GetDemo/useCookies接口是使用cookies才能訪問

[
	{		
		"description":"Mock模擬接口,返回Cookies",
		"request":{			
			"uri":"/GetDemo/withCookies",
			"method":"get"
		},		
		"response":{
			"json":{
				"Code":"Success",
				"Data":{
					"Link":"./locatin/xxx.jpg",
					"Message":"Mock模擬的帶Header信息的請求"
				}
			},
			"cookies":{
				"sessionID":"AABBCCDD"
				}
		}	
	},	
	{	
		"description":"Mock模擬接口,使用sessionID才能訪問成功",
		"request":{
			"uri":"/GetDemo/useCookies",
			"method":"get",
			"cookies":{
				"sessionID":"AABBCCDD"
				}
			},
			
		"response":{
			"json":{
				"Link":"/GetDemo/useCookies",
				"Data":{
					"name":"Anndy",
					"age":18,
					"Time":"2018-9-9"
				}
			}
		}
	}
]

3.2、HttpClient4.x獲取Cookie

 

public static void main(String[] args) {
	try {
		// 創建Get對象 請求URL要寫全 否則會報Host的異常
		HttpGet get = new HttpGet("http://localhost:8888/GetDemo/withCookies");
		//創建CookieStore對象用來獲取cookie
		CookieStore cookieStore = new BasicCookieStore();			
		// 創建get方法的執行對象 HttpClient4.X之後是這樣創建client對象的
		CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
		// 獲取response對象
		HttpResponse response= client.execute(get);
		// 將response對象轉換成String類型
		String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
		System.out.println(responseStr);
		//獲取到的Cookie是應該Cookie爲泛型的List集合
		List<Cookie> cookies = cookieStore.getCookies();
		for (Cookie cookie : cookies) {
			System.out.println(cookie.toString());
			System.out.println(cookie.getName()+"--"+cookie.getValue());
		}
	} catch (Exception e) {
		e.printStackTrace();
	}
}

執行結果 :

4、測試三:HttpClient4.x設置訪問是添加設置Cookies信息 

同樣還是2.1的Mock文件,攜帶Cookie訪問的代碼如下:

public static void main(String[] args) {
	try {
		// 創建get訪問對象
		HttpGet get = new HttpGet("http://localhost:8889/GetDemo/useCookies");
		// 創建CookieStore對象用來管理cookie
		CookieStore cookieStore = new BasicCookieStore();
		//new BasicClientCookie對象 用來注入cookie
		BasicClientCookie cookie = new BasicClientCookie("sessionID", "AABBCCDD");
		
		cookie.setDomain("localhost");//設置cookie的作用域
		
		cookieStore.addCookie(cookie);//將cookie添加到cookieStore中
		// 創建get方法的執行對象 HttpClient4.X之後是這樣創建client對象 設置cookies和header信息
		CloseableHttpClient client = HttpClients.custom().setDefaultCookieStore(cookieStore).build();
		HttpResponse response = client.execute(get);
		// 將response對象轉換成String類型
		String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
		System.out.println(responseStr);
		
	} catch (Exception e) {
		e.printStackTrace();
	}
}

5、測試四:Get請求中設置Header信息 

JSON文件請求格式文件如下:

[
	{		
		"description":"這是Mock接口,帶Header和參數的Demo",
		"request":{			
			"uri":"/GetDemo/withHeaders",
			"method":"get",
			"headers":{
				"context-Type":"AA",
				"Angent":"BB"
			},
			"queries":{
				"name":"Anndy",
				"age":"18"
			}
		},		
		"response":{
			"json":{
				"Code":"Success",
				"Data":{
					"Link":"./locatin/xxx.jpg",
					"Message":"Mock模擬的帶Header信息的請求"
				}			
			}
		}			
	}
]

JAVA代碼實現如下:

public static void main(String[] args) {
	try {
		//創建URLBuilder對象
		URIBuilder uriBuilder = new URIBuilder("http://localhost:8889/GetDemo/withHeaders");
		//創建集合 添加參數
		List<NameValuePair> list = new LinkedList<>();
		BasicNameValuePair param1 = new BasicNameValuePair("name", "Anndy");
		BasicNameValuePair param2 = new BasicNameValuePair("age", "18");
		list.add(param1);
		list.add(param2);
		uriBuilder.addParameters(list);
		// 創建get訪問對象
		HttpGet get = new HttpGet(uriBuilder.build());
		//設置Headers頭信息
		get.setHeader("context-Type", "AA");
		get.setHeader("Angent", "BB");
		CloseableHttpClient client = HttpClients.createDefault();
		HttpResponse response = client.execute(get);
		// 將response對象轉換成String類型
		String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
		System.out.println(responseStr);
	} catch (Exception e) {
		e.printStackTrace();
	}
}

6、測試五:POS請求中設置Header,和BODY參數信息  

JSON文件格式:

{
	"info": {
		"_postman_id": "6d1a9d03-ccc2-41b8-bed0-7cab9d1d829c",
		"name": "test",
		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
	},
	"item": [
		{
			"name": "測試接口而已",
			"request": {
				"method": "POST",
				"header": [
					{
						"key": "Content-Type",
						"name": "Content-Type",
						"type": "text",
						"value": "application/x-www-form-urlencoded",
						"disabled": true
					},
					{
						"key": "apikey",
						"type": "text",
						"value": "XXXXXXXXXXXXXXXXXXXXX"
					}
				],
				"body": {
					"mode": "urlencoded",
					"urlencoded": [
						{
							"key": "test1",
							"value": "zhangyu373",
							"type": "text"
						},
						{
							"key": "test2",
							"value": "1",
							"type": "text"
						},
						{
							"key": "test3",
							"value": "100",
							"type": "text"
						},
						{
							"key": "test4",
							"value": "2019-12-01",
							"type": "text"
						}
					]
				},
				"url": {
					"raw": "http://xxxxxxxxxx.xxx.com.cn/env-101/por-5903/newdbtest/sign/xxxxx",
					"protocol": "http",
					"host": [
						"opentest-api",
						"test",
						"test",
						"cn"
					],
					"path": [
						"env-101",
						"por-5903",
						"newdbtest",
						"sign",
						"gateway",
						"SecondProject",
						"rest",
						"bgy",
						"getDeptSignInfo"
					]
				}
			},
			"response": []
		}
	],
	"protocolProfileBehavior": {}
}

代碼實現:

    public static void main(String[] args) {
        try {
            //創建URLBuilder對象
            URIBuilder uriBuilder = new URIBuilder("http://xxxxxxxxxx.xxx.com.cn/env-101/por-5903/newdbtest/sign/xxxxx");
            //創建集合Body添加參數
            List<NameValuePair> list = new LinkedList<>();
            BasicNameValuePair param1 = new BasicNameValuePair("test1", "test11");
            BasicNameValuePair param2 = new BasicNameValuePair("test2", "1");
            BasicNameValuePair param3 = new BasicNameValuePair("test3", "100");
            BasicNameValuePair param4 = new BasicNameValuePair("test4", "2019-12-05");
            list.add(param1);
            list.add(param2);
            list.add(param3);
            list.add(param4);
            uriBuilder.addParameters(list);
            HttpPost post = new HttpPost(uriBuilder.build());
            //設置Headers頭信息
            post.addHeader("Content-Type", "application/x-www-form-urlencoded");
            post.addHeader("apikey", "xxxxxxxxxxxxx");
            
            CloseableHttpClient client = HttpClients.createDefault();
            HttpResponse response = client.execute(post);
            // 將response對象轉換成String類型
            String responseStr = EntityUtils.toString(response.getEntity(), "utf-8");
            System.out.println(responseStr);
        } catch (Exception e) {
            e.printStackTrace();

        }
    }

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章