1. 程式人生 > >HttpClient以json形式的引數呼叫http介面並對返回的json資料進行處理(可以帶檔案)

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);
    }

}
    

相關推薦

HttpClientjson形式的引數呼叫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

arcengine 連線sde,sde內資料進行管理增刪改

1、連線sde,用的是連線檔案,怎麼建立連線檔案,arcgis 工具箱, 如果service引數使用的預設的埠號5151,則必須在建立連線檔案之前必須建立和開啟sde服務,而如果使用sde:sqlserver:ip地址或計算機名,則不需要建立和開啟服務。 locati

java呼叫http介面解析返回json物件

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import jav

使用httpclient傳遞java引數呼叫http介面

使用的Jar包: <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><ver

Jquery form.js文件上傳返回JSON數據,在IE下提示下載文件的解決辦法,返回數據進行正確的解析

設置 解析 轉換 解決 pla esp 下載 ring 上傳 Jquery from.js插件上傳文件非常方便,但是在ie10以下的版本會彈出下載文件對話框 解決方法: 1、在服務端設置response.setContentType("text/plain"); 2、對返回

基於restful-api介面如何返回json資料個性化輸出

一:應用背景在介紹功能之前,先說一下工作中遇到的問題。專案中服務端提供restful api介面給前端網站、h5和app端使用,通過http請求返回json資料。目前存在一個A介面,因前期業務需要輸出50個業務屬性供app端業務開發,現在h5也有相似需求需要用到A介面,不同的

呼叫restFul介面如何實現返回資料編碼格式為utf-8

呼叫介面的時候restful介面的時候返回的資料格式一直是亂碼??????????如何解決:在介面上面添加註釋:@RequestMapping(value = "/userlogin",produces = "application/json; charset=utf-8")

java匯入excle表格,並且錶格進行相應的修改,錶格資料進行整理,最後匯出本地表格等一系列操作

1.首先建立一個java專案 2.匯入以下jar包 3.程式碼如下   public class auto_date { private static List<List<String>> readExcel(File file) throws Exception

java匯入excle表格,並且錶格進行相應的修改,錶格資料進行整理,最後匯出本地表格等一系列

1.首先建立一個java專案   完成效果如下圖所示 2.匯入以下jar包 3.程式碼如下   其中行和列的操作是根據需求自動劃分的 複製程式碼1 public class auto_date {2 private static List<List<String>> read

【Spring-boot 】FastJsonjson資料進行解析型別轉換

序列化序列化就是指 把JavaBean物件轉成JSON格式的字串。將Map轉成JSON將List<Map>轉成JSON。自定義JavaBean User轉成JSON。String objJson = JSON.toJSONString(Object object)

JQuery返回Json日期格式的問題 jquery時間/Date(1387900800000)進行處理

<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> 1 function DataBindToMemberDetailDialog(me

建立一個加密表空間錶內資料進行加密的示例

基於表空間的加密概念 對整個表空間進行加密,表空間中的所有物件都是加密的,例如 在加密表空間上建立一個表,表的所有欄位都是加密狀態,適用Oracle11gR2以上版本。 表空間加密資料的優點:不會再收到欄位加密的限制,例如 欄位型別,索引型別,需要設定no salt才可見索

在ListView中動態新增EditText其中的資料進行儲存和由於複用引起的Editext中的內容顯示異常的解決方案

public class AddAdapter extends BaseAdapter { private Context context; //需要增加的條目用一個Map儲存 private Map edItem; //記錄增加的條目數,作為下標給deItem賦值,可以不要

SqlServer2000 呼叫Http介面的儲存過程

SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO   create            Proc    &nb

spring restTemplate呼叫http介面的使用

spring 封裝了模擬http請求傳送的呼叫:   工具類: package com.tencent.sendmail.utils; import org.springframework.http.*; import org.springframework.util.Mul

呼叫http介面方式

public static void main(String[] args) throws Exception{ //介面地址         String path = "http://ip:埠/resource_manager/user/login";  

如何呼叫http介面通過get()/post()方法傳參

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.

Java 呼叫http介面

public static void main(String[] args) throws Exception {        //請求的webservice的url        URL url = new URL("http://");        //建立http連

JAVA 呼叫HTTP介面POST或GET實現方式

package com.yoodb.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import org.apac

java 呼叫http介面兩種方式

import java.io.BufferedWriter; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.Input