您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關如何在java中利用HttpClient對json格式的參數進行傳輸,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
重點是這兩句話:
httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); se.setContentType(CONTENT_TYPE_TEXT_JSON);
這兩句話的作用與jmeter的設置header信息類似
package com.base; import java.io.UnsupportedEncodingException; import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.PoolingClientConnectionManager; import org.apache.http.util.EntityUtils; /** * @author QiaoJiafei * @version 創建時間:2015年11月4日 下午1:55:45 * 類說明 */ public class HttpGetByJson { public static void main(String args[]) throws Exception{ final String CONTENT_TYPE_TEXT_JSON = "text/json"; DefaultHttpClient client = new DefaultHttpClient( new PoolingClientConnectionManager()); String url = "http://172.16.30.226:8091/svc/authentication/register"; String js = "{\"userName\":\"18600363833\",\"validateChar\":\"706923\",\"randomChar\":\"706923\",\"password\":\"123456\",\"confirmPwd\":\"123456\",\"recommendMobile\":\"\",\"idCard\":\"320601197608285792\",\"realName\":\"闕巖\",\"verifyCode\"}"; HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); StringEntity se = new StringEntity(js); se.setContentType(CONTENT_TYPE_TEXT_JSON); httpPost.setEntity(se); CloseableHttpResponse response2 = null; response2 = client.execute(httpPost); HttpEntity entity2 = null; entity2 = response2.getEntity(); String s2 = EntityUtils.toString(entity2, "UTF-8"); System.out.println(s2); } }
補充:HttpClient以json形式的參數調用http接口并對返回的json數據進行處理(可以帶文件)
1、參數的url就是被調用的地址,map是你要傳的參數。參數轉成json我使用的是gson方式轉換的。
主要使用的jar包有httpclient-4.5.3.jar、httpcore-4.4.6.jar、commons-codec-1.9.jar、gson-2.2.4.jar和commons-logging-1.2.jar。
如果發送的post請求想傳送文件,需添加httpmime-4.5.3.jar包,并設置如下代碼:
HttpEntity multipartEntityBuilder = MultipartEntityBuilder.create().addBinaryBody("file", new File("D:\\workspace\\programm\\WebContent\\programm\\1991.zip")).build();
第一個參數表示請求字段名,第二個參數就是文件。
還想添加參數則
HttpEntity multipartEntityBuilder = MultipartEntityBuilder.create().addTextBody("name", "張三").addBinaryBody("file", new File("D:\\workspace\\programm\\WebContent\\programm\\1991.zip")).build(); httpPost.setEntity(multipartEntityBuilder);
import java.io.IOException; import java.util.Map; import org.apache.http.HttpEntity; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; import com.google.gson.Gson; public class HttpClientUtil { private final static String CONTENT_TYPE_TEXT_JSON = "text/json"; public static String postRequest(String url, Map<String, Object> param) throws ClientProtocolException, IOException{ CloseableHttpClient client = HttpClients.createDefault(); HttpPost httpPost = new HttpPost(url); httpPost.setHeader("Content-Type", "application/json;charset=UTF-8"); Gson gson = new Gson(); String parameter = gson.toJson(param); StringEntity se = new StringEntity(parameter); se.setContentType(CONTENT_TYPE_TEXT_JSON); httpPost.setEntity(se); CloseableHttpResponse response = client.execute(httpPost); HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); return result; } }
2、返回的結果也可以使用gson轉換成對象進行下一步操作。
import com.google.gson.Gson; public class GsonUtil { public static <T> T jsonToObject(String jsonData, Class<T> type) { Gson gson = new Gson(); T result = gson.fromJson(jsonData, type); return result; } public static void main(String[] args) { String json = "{'id':'1','name':'zhang','address':'Hubei'}"; jsonToObject(json, Person.class); Person person = jsonToObject(json, Person.class); System.out.println(person); } }
建立要轉成的對象的類。
import java.util.Date; public class Person { private int id; private String name; private int age; private String address;public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]"; } }
3、發送以鍵值對形式的參數的post請求
package com.avatarmind.httpclient; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpEntity; 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; public class HttpClient3 { public static void main(String[] args) throws Exception { CloseableHttpClient client = HttpClients.createDefault(); String url = "http://yuntuapi.amap.com/datamanage/table/create"; HttpPost httpPost = new HttpPost(url); // 參數形式為key=value&key=value List<NameValuePair> formparams = new ArrayList<NameValuePair>(); formparams.add(new BasicNameValuePair("key", "060212638b94290e3dd0648c15753b64")); formparams.add(new BasicNameValuePair("name", "火狐")); // 加utf-8進行編碼 UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8"); httpPost.setEntity(uefEntity); CloseableHttpResponse response = client.execute(httpPost); HttpEntity entity = response.getEntity(); String result = EntityUtils.toString(entity, "UTF-8"); System.out.println(result); } }
關于如何在java中利用HttpClient對json格式的參數進行傳輸就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。