2016-02-26 48 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

我仍然充当客户端?导致组织将数据发布到我的服务器,并将数据保存在数据库中,然后回复相应的响应... –