您的位置:首页 > 编程语言 > Java开发

java代码webservice客户端的两种调用方式

2017-11-23 14:51 609 查看

import javax.xml.namespace.QName;

import javax.xml.rpc.Call;

import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.Service;

import javax.xml.rpc.ServiceException;

import javax.xml.rpc.ServiceFactory;

import javax.xml.rpc.encoding.XMLType;

//Axis客户端:

//第一种写法

 public String callinvoke(String bsId,String msg) throws Exception

 {    

  webServiceURL = queryaa06aa01(paraName, aab034);

  String targetNamespace = "namespace";

  QName servicename = new QName(webServiceURL,targetNamespace);

  //定义一个服务对象

  javax.xml.rpc.Service service = ServiceFactory.newInstance().createService(servicename);

  //根据服务对象创建一个请求对象

  javax.xml.rpc.Call call = service.createCall();

  //请求地址

  call.setTargetEndpointAddress(webServiceURL);

  //请求方法以及所使用的命名空间

  QName operationname = new QName(targetNamespace, "siService");

  //装入连接对象中

  call.setOperationName(operationname);

  //定义参数列表

  call.addParameter("bsId",XMLType.XSD_STRING,ParameterMode.IN );

  call.addParameter("msg",XMLType.XSD_STRING,ParameterMode.IN );  

  //定义命名空间中的类型

  QName returnname = new QName(targetNamespace, "string");

  //定义返回值类型

  call.setReturnType(returnname, String.class);

  //请求调用

  String result = call.invoke(new Object[]{bsId,msg}).toString();

  //解码出参

//  BASE64Decoder decoder = new BASE64Decoder();

//  byte[] deMsg = decoder.decodeBuffer(result);

//  result = new String(deMsg);

  result = this.DecodeBase64(result);

  return result;

 }

//第二种写法

public String callWebservice(String requestXml,String webService_url){

  String xml ="";

  System.out.println("入参报文:"+ requestXml +"\n");

  System.out.println("接口地址:"+ webService_url +"\n");

  try{

   Service service = new Service();

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

   call.setTargetEndpointAddress(new  java.net.URL(webService_url));

   call.setUseSOAPAction(true);

   call.setSOAPActionURI("https://www.baidu.com/");

   call.setOperationName(new QName("namespace", "exchange_ycyb"));

   call.setReturnType(XMLType.SOAP_STRING);

   call.addParameter("getinfo",XMLType.SOAP_STRING,ParameterMode.IN );//

   String XMLString = null;

   XMLString =  requestXml ;

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

   System.out.println("出参报文:"+result+"\n");

   xml = result;

   if(xml==null){

    xml = "";

   }

  }catch(Exception e){

   System.out.println("==============================异常信息=================:"+e.getMessage()+"\n");

  }

  return xml;

 }

//soap方式

package structdata;

import java.io.BufferedReader;

import java.io.ByteArrayOutputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.rmi.RemoteException;

import javax.xml.namespace.QName;

import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.ServiceException;

import javax.xml.rpc.ServiceFactory;

import javax.xml.soap.MessageFactory;

import javax.xml.soap.Name;

import javax.xml.soap.SOAPBody;

import javax.xml.soap.SOAPConnection;

import javax.xml.soap.SOAPConnectionFactory;

import javax.xml.soap.SOAPElement;

import javax.xml.soap.SOAPEnvelope;

import javax.xml.soap.SOAPMessage;

import javax.xml.soap.SOAPPart;

import javax.xml.transform.Source;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.stream.StreamResult;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpStatus;

import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;

import org.apache.commons.httpclient.methods.PostMethod;

import org.apache.commons.httpclient.methods.StringRequestEntity;

import org.apache.commons.httpclient.params.HttpClientParams;

import org.apache.commons.httpclient.params.HttpMethodParams;

import org.jfree.util.Log;

public class testcall {

 private static String targetNamespace = "";

 private String namespace = "";

 private static String webServiceURL = "";

 private static final long serialVersionUID = 0L;

 /**

  * @param args

  */

 public static void main(String[] args) {

  

  String temp = "";

  try {

    SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();//SOAPConnectionFactory.newInstance();

    SOAPConnection connection = soapConnFactory.createConnection();          

    MessageFactory messageFactory = MessageFactory.newInstance();//MessageFactory.newInstance();

    SOAPMessage message = messageFactory.createMessage();       

    SOAPPart soapPart = message.getSOAPPart();

    SOAPEnvelope envelope = soapPart.getEnvelope();

    SOAPBody body = envelope.getBody();                    

    SOAPElement bodyElement = body.addChildElement(envelope.createName("login" , "web", targetNamespace));

    SOAPElement firstElemnt = bodyElement.addChildElement(envelope.createName("cmpyCode" , "", ""));

    Name firstName = envelope.createName("type");

    firstElemnt.addAttribute(firstName, "String");

    firstElemnt.addTextNode("7");

    SOAPElement secondElemnt = bodyElement.addChildElement(envelope.createName("loginName" , "", ""));

    Name secondName = envelope.createName("type");

    secondElemnt.addAttribute(secondName, "String");

    secondElemnt.addTextNode("fangkezhanghu");     

    SOAPElement secondElemnt1 = bodyElement.addChildElement(envelope.createName("password" , "", ""));

    Name secondName1 = envelope.createName("type");

    secondElemnt1.addAttribute(secondName1, "String");

    secondElemnt1.addTextNode("123456");  

    message.saveChanges();

    String destination = webServiceURL;

    SOAPMessage reply = connection.call(message, destination);

    if(reply!=null)

    {

        Source source = reply.getSOAPPart().getContent();

        Transformer transformer = TransformerFactory.newInstance().newTransformer();

        ByteArrayOutputStream myOutStr = new ByteArrayOutputStream();

        StreamResult res = new StreamResult();

        res.setOutputStream(myOutStr);

        transformer.transform(source,res);

        temp = myOutStr.toString("UTF-8"); 

    }      

    connection.close();

  }

  catch(Exception e)

  {

    System.out.println(e.getMessage());

  }  

  if(temp == null)

  {

   temp = "";

  }

  

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: