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 = "";
}
}
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 = "";
}
}
相关文章推荐
- Java 调用 WebService 客户端代码 含通过代理调用
- java调用CXF WebService接口的两种方式
- java 用cxf方式实现的webservice,java客户端,C#客户端调用
- WebService的两种客户端调用方式
- WebService的两种客户端调用方式
- JAVA客户端API调用memcached两种方式
- java(jeecg框架) 调用CXF WebService接口的两种方式
- webservice之axis2客户端调用(maven方式创建java项目)
- webservice的两种客户端调用方式(总结)
- 客户端调用webservice的两种方式
- java调用xfire webService服务客户端代码
- cxf 方式三 是java客户端调用.net服务端 好使代码
- Java 调用C# webservice接口 生成java客户端 实现方式
- java调用webservice的客户端代码
- java实现WebService 以及客户端不同的调用方式
- webservice客户端(使用java代码调用服务端)
- java调用webservice两种常用方式
- WebService的两种客户端调用方式
- 作为客户端调用WebService服务java代码详解。
- 原生java调用webservice的方法,不用生成客户端代码