java程式碼webservice客戶端的兩種呼叫方式
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 = "
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("
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 = "";
}
}