回覆列表
  • 1 # 網路圈

    對於各類開發者而言,在日常工作中經常會遇到呼叫第三方API的場景,因為API有很多種實現方式,不同實現方式則客戶端呼叫方式也不同。但可以很明確的告訴你,HttpClient是可以跨語言呼叫第三方介面的。

    常見介面形式(分類)有哪些?

    API作為應用程式程式設計介面,可以使用不同的程式語言進行API的開發,另外介面的表現形式也不同,現在最常用的介面形式有以下這些:

    1、HTTP 介面(RESTful)

    基於HTTP協議開發的介面現在應用是最為廣泛的,這類API使用起來簡單明瞭,因為它是輕量級的、跨平臺、跨語言的,但凡是第三方提供的API都會有HTTP版本的介面。

    RESTful API也是基於HTTP協議的,只不過RESTful它並不是一種規範,它是一種設計準則,用不同的HTTP動詞(GET、POST、DELETE、PUT等)來表達不同的請求。

    2、RPC 介面

    RPC技術是指遠端過程呼叫,它本質上是一種Client/Server模式,可以像呼叫本地方法一樣去呼叫遠端伺服器上的方法,它支援多種協議(如:HTTP、TCP、UDP、自定協議)和多種資料傳輸方式(如:Json、XML、Binary、Protobuf等)。

    3、Web Service 介面

    Web Service其實是一種概念,我們可以將以WEB形式提供的服務稱為Web Service,所以像RESTful、XML-RPC、SOAP等都可以當成是Web Service的一種實現方式。

    不過Web Service介面和HTTP介面存在一些細小區別就是,Web Service介面支援更復雜的物件,而HTTP介面更多的就是傳輸字串或者JSON文字。

    HttpClient是啥?能否跨平臺呼叫?

    HttpClient通指HTTP協議的客戶端工具包,通俗理解就是透過HttpClient客戶端可以對所有的HTTP資源進行請求操作。現在主流的程式語言都有自己的HttpClient工具包,雖然名稱未必就叫“HttpClient”!

    因為HTTP協議就是跨語言的,所以透過HttpClient可以跨語言呼叫第三方的API。比如你的專案使用的是PHP開發的,對方提供的HTTP API是Java開發的,呼叫是不存在問題的!

  • 2 # 雲渺書齋

    簡述

    本文主要介紹如何基於HttpClient介面呼叫。

    所需jar例項

    package httputil_demo;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.NameValuePair;import org.apache.commons.httpclient.methods.PostMethod;import com.alibaba.fastjson.JSONObject;/**** <p>Title: HttputilDemo</p>** <p>Description: http介面請求例項</p>** @author** @date 2020年6月1日**/public class HttputilDemo {public static void main(String[] args) {String Url = "介面地址";JSONObject jsonparam = new JSONObject();jsonparam.put("key", "value");HttpClient client = new HttpClient();PostMethod method = new PostMethod(Url);client.getParams().setContentCharset("UTF-8");method.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");List<NameValuePair> paramList = new ArrayList<NameValuePair>();for (String key : jsonparam.keySet()) {paramList.add(new NameValuePair(key, jsonparam.getString(key)));}NameValuePair[] array = paramList.toArray(new NameValuePair[paramList.size()]);method.setRequestBody(array);String SubmitResult = "";try {client.executeMethod(method);SubmitResult = method.getResponseBodyAsString();System.out.println(SubmitResult);} catch (IOException e) {e.printStackTrace();} finally {method.releaseConnection();}}}

    請求結果程式碼目錄

    正春華枝俏,待秋實果茂,與君共勉。

  • 中秋節和大豐收的關聯?
  • 火勇天王山之戰即將開打,誰的贏面更大呢?