代码_AXIS:调用webservice接口发送soap报文

来源:互联网 发布:winXP关闭防火墙端口 编辑:程序博客网 时间:2024/06/08 00:19

一、拼接报文的方式:

    (1)利用StringBuffer来拼接字符串,代码如下:

                StringBuffer soapData = new StringBuffer();soapData.append("<?xml version=\"1.0\"?>");soapData.append("<ImageSearch provider=\"ATM-WF\" orgid=\"99\" branchid=\"99\" businessorgid=\"99\" busine                                    ssbranchid=\"ATM99\" userid=\"");soapData.append(userId);soapData.append("\" type=\"FR_BaseView\">");soapData.append("<InitSoapAddress>");soapData.append("http://10.112.**.*:8004/ImageViewPortal/services/ImageViewService?wsdl");soapData.append("</InitSoapAddress>");soapData.append("<InitSoapService>ImageViewService</InitSoapService>");soapData.append("<InitSoapAction>execute</InitSoapAction>");soapData.append("<Input>");soapData.append("<QueryTerm1>");soapData.append(signImageIndex);soapData.append("</QueryTerm1>");soapData.append("</Input>");soapData.append("</ImageSearch>");return soapData.toString();
    (2)利用dom4j拼接xml文件,代码如下:
public static void main(String args[]) {Document document = DocumentHelper.createDocument();//声明documentElement root = DocumentHelper.createElement("ImageSearch");//根节点document.setRootElement(root);//将根节点放入documentroot.addAttribute("provider","ATM-WF");//添加属性root.addAttribute("branchId ", "99");Element InitSoapAddress = root.addElement("InitSoapAddress");//子节点InitSoapAddress.addText(" http://10.112.*.***:8***/ImageViewPortal/services/ImageViewService?wsdl");//添加内容Element InitSoapService = root.addElement("InitSoapService");InitSoapService.setText("ImageViewService");Element InitSoapAction = root.addElement("InitSoapAction");InitSoapAction.addText("execute");XMLWriter str = new XMLWriter();try {str.write(document);//控制台输出} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

二、利用AXIS的call方法发送报文,代码如下:
public static String serUrl = "http://10.112.**.*:80**/ImageViewPortal/services/ImageViewService?wsdl";//访问接口地址public static String nameSpace = "http://10.112.**.*:80**/ImageViewPortal/services/ImageViewService";//wsdl文件中的namespace

String response = null;        String parameter =getBASE64(xmlSoap);//对报文进行BASE64转码,可不必try {Service service = new Service();Call call = (Call)service.createCall();QName qn = new QName(nameSpace,"execute");call.setTargetEndpointAddress(new java.net.URL(serUrl));call.setOperationName(qn);call.setEncodingStyle("UTF-8");call.addParameter("xml", XMLType.XSD_STRING,ParameterMode.IN);//xml为execute方法的参数名,后面定义类型,和方式call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//返回报文类型response = (String)call.invoke(new Object[]{parameter});} catch(ServiceException e) {e.printStackTrace();logger.error(e);} catch (RemoteException e) {e.printStackTrace(); logger.error(e);} catch (MalformedURLException e) {e.printStackTrace();}
三、返回报文取某个节点里的值,这里取url(返回报文格式为:
<TIV version="1.0.0"><ImageUrls><ImageUrlsrc="http://10.112.**.*:8***/ImageStoreServer//servlet/FileDownLoad?name=286456&amp;businessCode=ImageATM"><Range>1-1</Range></ImageUrl></ImageUrls></TIV>):
Document document = null;try {document = DocumentHelper.parseText(releaseCode);} catch (DocumentException e) {logger.error("ParseTextException");}Element root = document.getRootElement();//获取根节点Element child = root.element("ImageUrls");//获取子节点Element grandson = child.element("ImageUrl");//获取子目标节点String url= grandson.attributeValue("src");//获取目标属性System.out.println(url); return url;


原创粉丝点击