2016-02-26 43 views
1

我正在使用組織的支付API。當客戶付款時,API會自動向我們的服務器發佈肥皂請求,我會用xml中的確認消息進行響應。 (退房的屏幕截圖顯示了SOAP UI一個簡單的演示)java servlet中的密鑰庫和信任庫的代碼位置

SOAP UI Test Response

SOAP UI Test Raw XML

我用Java做這個代碼接收SOAP請求和發送響應。

`public class testsoap extends HttpServlet { 

protected void processRequest(HttpServletRequest request,  
HttpServletResponse response)throws ServletException, IOException { 

response.setContentType("text/xml;charset=UTF-8"); 
    ServletInputStream out = request.getInputStream(); 

    String xmlrpc = ""; 
    int c = 0; 
    while((c = out.read()) != -1){ xmlrpc += (char)c; } 

    int startTag = xmlrpc.indexOf("<TransID>"); 
    int endTag = xmlrpc.indexOf("</TransID>"); 

    String parameter = xmlrpc.substring(startTag,endTag).replaceAll("<TransID>",""); 

    String result=""; 
    //result +="<?xml version=\"1.0\"?>\n"; 
    result +="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:c2b=\"http://cps.huawei.com/cpsinterface/c2bpayment\">\n"; 
    result +="<soapenv:Header/>\n"; 
    result +="<soapenv:Body>\n"; 
    result +="<c2b:C2BPaymentConfirmationResult>C2B Payment Transaction "+parameter+" result received.</c2b:C2BPaymentConfirmationResult>\n"; 
    result +="</soapenv:Body>\n"; 
    result +="</soapenv:Envelope>\n"; 

    response.getWriter().println(result); 

} 

}` 

現在我需要添加我的密鑰庫和信任庫的位置。 我應該在開始準備響應之前添加此代碼嗎?

` System.setProperty("javax.net.ssl.keyStore",path_to_keystore); 
    System.setProperty("javax.net.ssl.keyStorePassword",akeystorepassword); 

    System.setProperty("javax.net.ssl.trustStore",path_to_your_cacerts_file); 
    System.setProperty("javax.net.ssl.trustStorePassword",atrustsorepassword)` 

或者我需要做一個片段,使用密鑰庫和信任庫進行安全連接,而不僅僅是設置系統屬性?

+0

或者這不是做這個整個場景的適當方式嗎? –

回答

0

創建一個Java類並將所有需要發佈的功能編寫爲一個方法。然後,您需要將這些功能發佈爲WSDL以供客戶使用。請參見下面的教程,將帶你一步一步地發佈Web服務:

Step by Step JAX-WS Web Services with Eclipse, TomEE, and Apache CXF

Building a Simple Web Service ? A Tutorial

Implementing a simple web service

而且根據你的要求,你可以有複雜的對象作爲輸入參數如C2BPaumentConfirmationRequestKYCInfo在你的情況下

+0

薩爾曼,對不起,我忘了提及,我已經有一個現有的WSDL文件。該組織提供API。 –

+0

@BrianHawi然後在這種情況下,您充當客戶和充當服務器的支付組織。在這種情況下,您可以使用許多工具(例如Axis1.x,Axis2和Apcahce CXF)從WSDL鏈接創建一個代碼。以下鏈接顯示了使用Eclipse [從WSDL生成 客戶端](http://www.eclipse.org/webtools/community/education/web/t320/Generating_a_client_from_WSDL.pdf)執行此操作的方法 – Salman

+0

我仍然充當客戶端?導致組織將數據發佈到我的服務器,並將數據保存在數據庫中,然後回覆相應的響應... –