java介面調用,java介面調用鏈路追蹤

本文目錄一覽:

怎麼看java代碼中介面調用關係

類與類的關係

1、依賴關係

依賴關係表示一個類依賴於另一個類的定義。通俗來講即是類A中使用了另外的一個類B,且類B並非類A中作為屬性存在,即表示類A依賴於類B。對象之間最弱的一種關聯方式,是臨時性的關聯。代碼中一般指由局部變數、函數參數、返回值建立的對於其他對象的調用關係。

class A{

public B method(C c){

B b = new B();

return b;

}

}

登錄後複製

2、關聯關係

關聯關係是類與類之間的聯接,它使一個類知道另一個類的屬性和方法。通俗來講即類A中有一個屬性b,該屬性的數據類型為類B,類A可以通過屬性b調用類B的屬性與方法。也即一般來說的has-a的關係。

class A{

public B b;

}

登錄後複製

3、聚合關係

聚合關係是特殊的關聯關係,其與關聯關係在代碼上並無實際上的區別,二者的區別主要體現在語義上,關聯關係即代表可有可無,而聚合關係則代表必須擁有(註:被聚合或關聯的事務也代表一個單獨的事務,其也有獨立的意義。)舉例說明就像筆記本電腦,其與外接滑鼠就是關聯關係,外接滑鼠只是附件,而想cpu,內存條等是組成一個筆記本電腦所必須的,而他們的關係就是聚合關係。

class computer{

public Cpu cpu1;

}

登錄後複製

4、組合關係

組合關係也是特殊的關聯關係,其類似於聚合關係,但比聚合關係更加的強,即對象 A 包含對象 B,對象 B 離開對象 A 沒有實際意義。舉例來講就是作為一個人,你可以沒有錢,但你不能沒有腦子(物理),你與錢就是關聯關係,錢乃身外之物,而你與大腦則是組合關係,大腦每人就一個,沒了它,你便無法存在,而單獨一個腦子離開了人也就失去了它應有的作用。

class person{

public Head head;

}

登錄後複製

5、繼承關係

類與類的繼承關係,類與介面的實現關係。繼承指的是一個類(稱為子類、子介面)繼承另外的一個類(稱為父類、父介面)的功能,並可以增加它自己的新功能的能力。

class A extends B{

public A(){

super();

}

}

登錄後複製

類與類之間的繼承只能是單繼承,但可以多層繼承。

單繼承即表示一個類只可以繼承一個父類。

多層繼承即是類A繼承類B,而類B又繼承了類C,所以類A間接繼承了類C

類與介面之間的關係

註:Java8新增了默認方法和靜態方法;

public interface A{

//抽象方法

public void a1();

//默認方法

default void a2() {

System.out.println(“a2”);

}

//靜態方法

static void a4() {

System.out.println(“a4”);

}

}

登錄後複製

其中,靜態方法只供介面直接使用

類可以繼承一個類且實現多個介面

注意:

1.如果多個介面中有同名的抽象方法,那麼實現類只需要實現一次即可

2.如果多個介面中有同名的默認方法,那麼實現類必須重寫一次,並且要去掉default關鍵字

介面可以繼承多個介面

注意:

1.如果多個父介面中有同名的抽象方法,那麼子介面只需要實現一次即可

2.如果多個父介面中有同名的默認方法,那麼子介面必須重寫默認方法,必須要加default關鍵字

怎麼用java調用微信支付介面

java調用微信支付介面方法:\x0d\x0aRequestHandlerrequestHandler=newRequestHandler(super.getRequest(),super.getResponse());\x0d\x0a\x0d\x0a//獲取token//兩小時內有效,兩小時後重新獲取\x0d\x0a\x0d\x0aToken=requestHandler.GetToken();\x0d\x0a\x0d\x0a//更新token到應用中\x0d\x0a\x0d\x0arequestHandler.getTokenReal();\x0d\x0a\x0d\x0aSystem.out.println(“微信支付獲取token=======================:”+Token);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//requestHandler初始化\x0d\x0a\x0d\x0arequestHandler.init();\x0d\x0a\x0d\x0arequestHandler.init(appid,appsecret,appkey,partnerkey,key);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//——————————–本地系統生成訂單————————————-\x0d\x0a\x0d\x0a//設置package訂單參數\x0d\x0a\x0d\x0aSortedMappackageParams=newTreeMap();\x0d\x0a\x0d\x0apackageParams.put(“bank_type”,”WX”);//支付類型\x0d\x0a\x0d\x0apackageParams.put(“body”,”xxxx”);//商品描述\x0d\x0a\x0d\x0apackageParams.put(“fee_type”,”1″);//銀行幣種\x0d\x0a\x0d\x0apackageParams.put(“input_charset”,”UTF-8″);//字符集\x0d\x0a\x0d\x0apackageParams.put(“notify_url”,””);//通知地址這裡的通知地址使用外網地址測試,注意80埠是否打開。\x0d\x0a\x0d\x0apackageParams.put(“out_trade_no”,no);//商戶訂單號\x0d\x0a\x0d\x0apackageParams.put(“partner”,partenerid);//設置商戶號\x0d\x0a\x0d\x0apackageParams.put(“spbill_create_ip”,super.getRequest().getRemoteHost());//訂單生成的機器IP,指用戶瀏覽器端IP\x0d\x0a\x0d\x0apackageParams.put(“total_fee”,String.valueOf(rstotal));//商品總金額,以分為單位\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//設置支付參數\x0d\x0a\x0d\x0aSortedMapsignParams=newTreeMap();\x0d\x0a\x0d\x0asignParams.put(“appid”,appid);\x0d\x0a\x0d\x0asignParams.put(“noncestr”,noncestr);\x0d\x0a\x0d\x0asignParams.put(“traceid”,PropertiesUtils.getOrderNO());\x0d\x0a\x0d\x0asignParams.put(“timestamp”,timestamp);\x0d\x0a\x0d\x0asignParams.put(“package”,packageValue);\x0d\x0a\x0d\x0asignParams.put(“appkey”,this.appkey);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成支付簽名,要採用URLENCODER的原始值進行SHA1演算法!\x0d\x0a\x0d\x0aStringsign=””;\x0d\x0a\x0d\x0atry{\x0d\x0a\x0d\x0asign=Sha1Util.createSHA1Sign(signParams);\x0d\x0a\x0d\x0a}catch(Exceptione){\x0d\x0a\x0d\x0ae.printStackTrace();\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//增加非參與簽名的額外參數\x0d\x0a\x0d\x0asignParams.put(“sign_method”,”sha1″);\x0d\x0a\x0d\x0asignParams.put(“app_signature”,sign);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//api支付拼包結束————————————\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//獲取prepayid\x0d\x0a\x0d\x0aStringprepayid=requestHandler.sendPrepay(signParams);\x0d\x0a\x0d\x0aSystem.out.println(“prepayid:”+prepayid);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//——————————–生成完成———————————————\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成預付快訂單完成,返回給android,ios掉起微信所需要的參數。\x0d\x0a\x0d\x0aSortedMappayParams=newTreeMap();\x0d\x0a\x0d\x0apayParams.put(“appid”,appid);\x0d\x0a\x0d\x0apayParams.put(“noncestr”,noncestr);\x0d\x0a\x0d\x0apayParams.put(“package”,”Sign=WXPay”);\x0d\x0a\x0d\x0apayParams.put(“partnerid”,partenerid);\x0d\x0a\x0d\x0apayParams.put(“prepayid”,prepayid);\x0d\x0a\x0d\x0apayParams.put(“appkey”,this.appkey);\x0d\x0a\x0d\x0a//這裡除1000是因為參數長度限制。\x0d\x0a\x0d\x0ainttime=(int)(System.currentTimeMillis()/1000);\x0d\x0a\x0d\x0apayParams.put(“timestamp”,String.valueOf(time));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println(“timestamp:”+time);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//簽名\x0d\x0a\x0d\x0aStringpaysign=””;\x0d\x0a\x0d\x0atry{\x0d\x0a\x0d\x0apaysign=Sha1Util.createSHA1Sign(payParams);\x0d\x0a\x0d\x0a}catch(Exceptione){\x0d\x0a\x0d\x0ae.printStackTrace();\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apayParams.put(“sign”,paysign);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//拼json數據返回給客戶端\x0d\x0a\x0d\x0aBasicDBObjectbackObject=newBasicDBObject();\x0d\x0a\x0d\x0abackObject.put(“appid”,appid);\x0d\x0a\x0d\x0abackObject.put(“noncestr”,payParams.get(“noncestr”));\x0d\x0a\x0d\x0abackObject.put(“package”,”Sign=WXPay”);\x0d\x0a\x0d\x0abackObject.put(“partnerid”,payParams.get(“partnerid”));\x0d\x0a\x0d\x0abackObject.put(“prepayid”,payParams.get(“prepayid”));\x0d\x0a\x0d\x0abackObject.put(“appkey”,this.appkey);\x0d\x0a\x0d\x0abackObject.put(“timestamp”,payParams.get(“timestamp”));\x0d\x0a\x0d\x0abackObject.put(“sign”,payParams.get(“sign”));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aStringbackstr=dataObject.toString();\x0d\x0a\x0d\x0aSystem.out.println(“backstr:”+backstr);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0areturnbackstr;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a====================到此為止,預付款訂單已生成,並且已返回客戶端====================\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//坐等微信伺服器通知,通知的地址就是生成預付款訂單的notify_url\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aResponseHandlerresHandler=newResponseHandler(request,response);\x0d\x0a\x0d\x0aresHandler.setKey(partnerkey);\x0d\x0a\x0d\x0a//創建請求對象\x0d\x0a\x0d\x0a//RequestHandlerqueryReq=newRequestHandler(request,response);\x0d\x0a\x0d\x0a//queryReq.init();\x0d\x0a\x0d\x0aif(resHandler.isTenpaySign()==true){\x0d\x0a\x0d\x0a//商戶訂單號\x0d\x0a\x0d\x0aStringout_trade_no=resHandler.getParameter(“out_trade_no”);\x0d\x0a\x0d\x0aSystem.out.println(“out_trade_no:”+out_trade_no);\x0d\x0a\x0d\x0a//財付通訂單號\x0d\x0a\x0d\x0aStringtransaction_id=resHandler.getParameter(“transaction_id”);\x0d\x0a\x0d\x0aSystem.out.println(“transaction_id:”+transaction_id);\x0d\x0a\x0d\x0a//金額,以分為單位\x0d\x0a\x0d\x0aStringtotal_fee=resHandler.getParameter(“total_fee”);\x0d\x0a\x0d\x0a//如果有使用折扣券,discount有值,total_fee+discount=原請求的total_fee\x0d\x0a\x0d\x0aStringdiscount=resHandler.getParameter(“discount”);\x0d\x0a\x0d\x0a//支付結果\x0d\x0a\x0d\x0aStringtrade_state=resHandler.getParameter(“trade_state”);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//判斷簽名及結果\x0d\x0a\x0d\x0aif(“0”.equals(trade_state)){\x0d\x0a\x0d\x0a//——————————\x0d\x0a\x0d\x0a//即時到賬處理業務開始\x0d\x0a\x0d\x0a//——————————\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println(“—————-業務邏輯執行—————–“);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//——請根據您的業務邏輯來編寫程序(以上代碼僅作參考)——\x0d\x0a\x0d\x0aSystem.out.println(“—————-業務邏輯執行完畢—————–“);\x0d\x0a\x0d\x0aSystem.out.println(“success”);//請不要修改或刪除\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println(“即時到賬支付成功”);\x0d\x0a\x0d\x0a//給財付通系統發送成功信息,財付通系統收到此結果後不再進行後續通知\x0d\x0a\x0d\x0aresHandler.sendToCFT(“success”);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//給微信伺服器返回success否則30分鐘通知8次\x0d\x0a\x0d\x0areturn”success”;\x0d\x0a\x0d\x0a}else{\x0d\x0a\x0d\x0aSystem.out.println(“通知簽名驗證失敗”);\x0d\x0a\x0d\x0aresHandler.sendToCFT(“fail”);\x0d\x0a\x0d\x0aresponse.setCharacterEncoding(“utf-8”);\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a}else{\x0d\x0a\x0d\x0aSystem.out.println(“fail-Md5failed”);

java如何調用webservice介面?

Java通過WSDL文件來調用webservice直接調用模式如下:

import java.util.Date;

import java.text.DateFormat;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import javax.xml.namespace.QName;

import java.lang.Integer;

import javax.xml.rpc.ParameterMode;

public class caClient {

public static void main(String[] args) {

try {

String endpoint = “”;

//直接引用遠程的wsdl文件

//以下都是套路

Service service = new Service();

Call call = (Call) service.createCall();

call.setTargetEndpointAddress(endpoint);

call.setOperationName(“addUser”);//WSDL裡面描述的介面名稱

call.addParameter(“userName”, org.apache.axis.encoding.XMLType.XSD_DATE,

javax.xml.rpc.ParameterMode.IN);//介面的參數

call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//設置返回類型

String temp = “測試人員”;

String result = (String)call.invoke(new Object[]{temp});

//給方法傳遞參數,並且調用方法

System.out.println(“result is “+result);

}

catch (Exception e) {

System.err.println(e.toString());

}

}

}

JAVA怎麼調用介面?

String sendPost(String jsonStr, String path)

throws IOException {

byte[] data = jsonStr.getBytes();

java.net.URL url = new java.net.URL(path);

java.net.HttpURLConnection conn =

(java.net.HttpURLConnection) url.openConnection();

conn.setRequestMethod(“POST”);

conn.setConnectTimeout(5 * 1000);// 設置連接超時時間為5秒

conn.setReadTimeout(20 * 1000);// 設置讀取超時時間為20秒

// 使用 URL 連接進行輸出,則將 DoOutput標誌設置為 true

conn.setDoOutput(true);

conn.setRequestProperty(“Content-Type”, “text/xml;charset=UTF-8”);

//conn.setRequestProperty(“Content-Encoding”,”gzip”);

conn.setRequestProperty(“Content-Length”, String.valueOf(data.length));

OutputStream outStream = conn.getOutputStream();// 返回寫入到此連接的輸出流

outStream.write(data);

outStream.close();//關閉流

String msg = “”;// 保存調用http服務後的響應信息

// 如果請求響應碼是200,則表示成功

if (conn.getResponseCode() == 200) {

// HTTP服務端返回的編碼是UTF-8,故必須設置為UTF-8,保持編碼統一,否則會出現中文亂碼

BufferedReader in = new BufferedReader(new InputStreamReader(

(InputStream) conn.getInputStream(), “UTF-8”));

msg = in.readLine();

in.close();

}

conn.disconnect();// 斷開連接

return msg;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/284664.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 15:41
下一篇 2024-12-22 15:42

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論