您的位置:首页 > 大数据 > 人工智能

aixs2客户端调axis1服务

2015-10-26 16:02 525 查看
aixs2客户端调axis1服务 通常 用rpc 的方式

package client;

import java.util.Map;

import org.apache.axiom.om.OMAbstractFactory;

import org.apache.axiom.om.OMElement;

import org.apache.axiom.om.OMFactory;

import org.apache.axiom.om.OMNamespace;

import org.apache.axis2.AxisFault;

import org.apache.axis2.addressing.EndpointReference;

import org.apache.axis2.client.Options;

import org.apache.axis2.client.ServiceClient;

import tools.AxiomParseXML;

public class NXopenModeTestRPC {

private static EndpointReference targetEPR = new EndpointReference("http://135.193.100.100:99999/services/CrmOcs");

public static void main(String[] args) {

try {

String xml = "<USERSTATREQUEST><MSGHEADER><MSGTYPE>02</MSGTYPE><RECORDTYPE>902</RECORDTYPE><VERSION>01</VERSION></MSGHEADER><MSGBODY><MSISDN>13199998888</MSISDN><STATE>A</STATE><DATE>20151026153901</DATE></MSGBODY></USERSTATREQUEST>";

OMFactory fac = OMAbstractFactory.getOMFactory();

OMNamespace ns = fac.createOMNamespace("http://crm.ocs.xxxx.com", "intf");

OMElement payload = fac.createOMElement("UserStatRequest", ns);

payload.setText(xml);

Options options = new Options();

ServiceClient client = new ServiceClient();

options.setTo(targetEPR);

client.setOptions(options);

//Blocking invocation

OMElement result = client.sendReceive(payload);

String rspxml=result.toString().replaceAll("<", "<");

System.out.println("rspxml=\n"+rspxml);

Map map=AxiomParseXML.getResults(result);

String sessionid=(String)map.get("SESSIONID");

String resultcode=(String)map.get("RESULTCODE");

System.out.println("resultcode="+resultcode);

} catch (AxisFault axisFault) {

axisFault.printStackTrace();

}

}

}

以报文方式处理:

package client;

import java.io.ByteArrayInputStream;

import java.io.UnsupportedEncodingException;

import java.util.Iterator;

import java.util.Map;

import javax.xml.stream.XMLStreamException;

import org.apache.axiom.om.OMElement;

import org.apache.axiom.om.impl.builder.StAXOMBuilder;

import org.apache.axis2.addressing.EndpointReference;

import org.apache.axis2.client.ServiceClient;

import org.apache.log4j.Logger;

import tools.AxiomParseXML;

public class NXopenModeTest {

public String invokeOpenModeService(String msisdn){

String result="";

try{

ServiceClient serviceClient = new ServiceClient();

serviceClient.setTargetEPR(new EndpointReference("http://100.100.7.159:9999999/services/CrmOcs"));

//serviceClient.getOptions().setAction("urn:");

java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyyMMddHHmmss");

String cur_time=sdf.format(System.currentTimeMillis());

//String xml = "<USERSTATREQUEST><MSGHEADER><MSGTYPE>02</MSGTYPE><RECORDTYPE>902</RECORDTYPE><VERSION>01</VERSION></MSGHEADER><MSGBODY><MSISDN>"+msisdn+"</MSISDN><STATE>A</STATE><DATE>"+cur_time+"</DATE></MSGBODY></USERSTATREQUEST>";

String reqxml= "\t\t<UserStatRequest>\n" +

"\t\t\t<xmlRequest><![CDATA[\n" +

"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\" ?>\n" +

"<USERSTATREQUEST>\n" +

"\t<MSGHEADER>\n" +

"\t\t<MSGTYPE>02</MSGTYPE>\n" +

"\t\t<RECORDTYPE>902</RECORDTYPE>\n" +

"\t\t<VERSION>01</VERSION>\n" +

"\t</MSGHEADER>\n" +

"\t<MSGBODY>\n" +

"\t\t<MSISDN>"+msisdn+"</MSISDN>\n" +

"\t\t<STATE>A</STATE>\n" +

"\t\t<DATE>"+cur_time+"</DATE>\n" +

"\t</MSGBODY>\n" +

"</USERSTATREQUEST>\n" +

"\n" +

"]]></xmlRequest>\n" +

"</UserStatRequest>\n";

OMElement reqele=toOMElement(reqxml,"UTF-8");

System.out.println("reqxml=\n"+reqxml);

OMElement response1 = serviceClient.sendReceive(reqele);

String rspxml=response1.toString().replaceAll("<", "<");

System.out.println("rspxml=\n"+rspxml);

OMElement UserStatRequestReturnEle = response1.getFirstElement();

OMElement conentRootEle = (new StAXOMBuilder(new ByteArrayInputStream(UserStatRequestReturnEle.getText().getBytes("UTF-8")))).getDocumentElement();

Iterator<OMElement> iter = conentRootEle.getChildElements();

while(iter.hasNext()){

OMElement node = iter.next();

if(node.getLocalName().equals("MSGBODY")){

Map map=AxiomParseXML.getResults(node);

String sessionid=(String)map.get("SESSIONID");

result=(String)map.get("RESULTCODE");

System.out.println("resultcode="+result);

break;

}

}

}catch(Exception e){

e.printStackTrace();

Logger.getLogger("").error("修改"+msisdn+"的用户状态出现异常 :"+e.getMessage());

System.out.println("修改"+msisdn+"的用户状态出现异常 :"+e.getMessage());

}

return result;

}

private OMElement toOMElement(String xmlStr, String encoding)

{

OMElement xmlValue;

try {

xmlValue = (new StAXOMBuilder(new ByteArrayInputStream(xmlStr.getBytes(encoding)))).getDocumentElement();

return xmlValue;

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (XMLStreamException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("---------x");

NXopenModeTest test=new NXopenModeTest();

test.invokeOpenModeService("13079594017");

}

}

使用soap-ui测试报文:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://crm.xxxx.xxxx.com">

<SOAP-ENV:Body>

<ns1:UserStatRequest>

<ns1:xmlRequest><![CDATA[

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

<USERSTATREQUEST>

<MSGHEADER>

<MSGTYPE>02</MSGTYPE>

<RECORDTYPE>902</RECORDTYPE>

<VERSION>01</VERSION>

</MSGHEADER>

<MSGBODY>

<MSISDN>13079594017</MSISDN>

<STATE>A</STATE>

<DATE>20151026171900</DATE>

</MSGBODY>

</USERSTATREQUEST>

]]></ns1:xmlRequest>

</ns1:UserStatRequest>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

axis2简易rpc调用例子
http://blog.csdn.net/maotongbin/article/details/10110711
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: