posts - 495,comments - 227,trackbacks - 0
          <2006年7月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(46)

          隨筆分類(476)

          隨筆檔案(495)

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1396856
          • 排名 - 16

          最新評論

          閱讀排行榜

          評論排行榜

          調用webservice,可以首先根據wsdl文件生成客戶端,或者直接根據地址調用,下面討論直接調用地址的兩種不同方式:axis和Soap,soap方式主要是用在websphere下

          axis方式調用:

          ?

          import java.util.Date;

          import java.text.DateFormat;

          import org.apache.axis.client.Call;

          import org.apache.axis.client.Service;

          import javax.xml.namespace.QName;

          import java.lang.Integer;

          import javax.xml.rpc.ParameterMode;

          ?

          public class caClient {

          ????????????

          ?????? public static void main(String[] args) {

          ?

          ????????????? try {

          ???????????????????? String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";

          ???????????????????? Service service = new Service();

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

          ???????????????????? call.setTargetEndpointAddress(endpoint);

          ???????????????????? call.setOperationName("addUser");

          ???????????????????? call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,

          ?????????????????????????????????? javax.xml.rpc.ParameterMode.IN);

          ???????????????????? call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);

          ???????????????????? call.setUseSOAPAction(true);

          ???????????????????? call.setSOAPActionURI("http://www.my.com/Rpc");

          ???????????????????? //Integer k = (Integer) call.invoke(new Object[] { i, j });

          ???????????????????? //System.out.println("result is? " + k.toString() + ".");

          ???????????????????? String temp = "測試人員";

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

          ???????????????????? System.out.println("result is "+result);

          ????????????? }

          ????????????? catch (Exception e) {

          ???????????????????? System.err.println(e.toString());

          ????????????? }

          ?????? }

          }

          soap方式調用

          調用java生成的webservice

          import org.apache.soap.util.xml.*;

          import org.apache.soap.*;

          import org.apache.soap.rpc.*;

          ?

          import java.io.*;

          import java.net.*;

          import java.util.Vector;

          ?

          public class caService{

          ?????? public static String getService(String user) {

          ?????? URL url = null;

          ?????? try {

          ?????????? url=new URL("http://192.168.0.100:8080/ca3/services/caSynrochnized");

          ?????? } catch (MalformedURLException mue) {

          ????????? return mue.getMessage();

          ????? ?? }

          ???????????? // This is the main SOAP object

          ?????? Call soapCall = new Call();

          ?????? // Use SOAP encoding

          ?????? soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

          ?????? // This is the remote object we're asking for the price

          ?????? soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");

          ?????? // This is the name of the method on the above object

          ?????? soapCall.setMethodName("getUser");

          ?????? // We need to send the ISBN number as an input parameter to the method

          ?????? Vector soapParams = new Vector();

          ?

          ?????? // name, type, value, encoding style

          ?????? Parameter isbnParam = new Parameter("userName", String.class, user, null);

          ?????? soapParams.addElement(isbnParam);

          ?????? soapCall.setParams(soapParams);

          ?????? try {

          ????????? // Invoke the remote method on the object

          ????????? Response soapResponse = soapCall.invoke(url,"");

          ????????? // Check to see if there is an error, return "N/A"

          ????????? if (soapResponse.generatedFault()) {

          ????????????? Fault fault = soapResponse.getFault();

          ???????????? String f = fault.getFaultString();

          ???????????? return f;

          ????????? } else {

          ???????????? // read result

          ???? ????????Parameter soapResult = soapResponse.getReturnValue ();

          ???????????? // get a string from the result

          ???????????? return soapResult.getValue().toString();

          ????????? }

          ?????? } catch (SOAPException se) {

          ????????? return se.getMessage();

          ?????? }

          ?? ?}

          }

          返回一維數組時

          Parameter soapResult = soapResponse.getReturnValue();

          String[] temp = (String[])soapResult.getValue();

          ?

          調用ASP.Net生成的webservice

          private String HelloWorld(String uri, String u) {

          ????????????? try {

          ???????????????????? SOAPMappingRegistry smr = new SOAPMappingRegistry();

          ????????????? ?????? StringDeserializer sd = new StringDeserializer();

          ???????????????????? ArraySerializer arraySer = new ArraySerializer();

          ???????????????????? BeanSerializer beanSer = new BeanSerializer();

          ???????????????????? smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName(

          ?????????????????????????????????? "http://tempuri.org/", "HelloWorldResult"), String.class,

          ?????????????????????????????????? null, sd);

          ???????????????????? smr.mapTypes(Constants.NS_URI_SOAP_ENC, new QName(

          ?????????????????????????????????? "http://tempuri.org/", "temp"), String.class,

          ?????????????????????????????????? beanSer, beanSer);

          ?

          ???????????????????? URL url = new URL(uri);

          ???????????????????? Call call = new Call();

          ???????????????????? call.setSOAPMappingRegistry(smr);

          ???????????????????? call.setTargetObjectURI("urn:xmethods-Service1");

          ???????????????????? call.setMethodName("HelloWorld");

          ???????????????????? call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);

          ?

          ???????????????????? Vector soapParams = new Vector();

          ???????????????????? soapParams.addElement(new Parameter("temp", String.class, u, null));

          ???????????????????? call.setParams(soapParams);

          ?

          ???????????????????? Response soapResponse = call.invoke(url,"http://tempuri.org/HelloWorld");

          ?

          ???????????????????? if (soapResponse.generatedFault()) {

          ??????????????????????????? Fault fault = soapResponse.getFault();

          ??????????????????????????? System.out.println(fault);

          ???????????????????? } else {

          ??????????????????????????? Parameter soapResult = soapResponse.getReturnValue();

          ??????????????????????????? Object obj = soapResult.getValue();

          ??????????????????????????? System.out.println("===" + obj);

          ???????????????????? }

          ????????????? } catch (Exception e) {

          ???????????????????? e.printStackTrace();

          ????????????? }

          ????????????? return null;

          ?????? }
          posted on 2006-07-20 17:26 SIMONE 閱讀(10868) 評論(1)  編輯  收藏 所屬分類: JAVAJSP

          FeedBack:
          # re: Webservice調用方式:axis,soap詳解
          2007-04-24 20:15 | Bob
          謝謝,領了  回復  更多評論
            
          主站蜘蛛池模板: 鹿邑县| 敖汉旗| 锦屏县| 息烽县| 乌兰县| 微山县| 乌拉特前旗| 广饶县| 纳雍县| 石景山区| 德州市| 毕节市| 南和县| 白山市| 新巴尔虎左旗| 渝中区| 汉阴县| 广元市| 平邑县| 天长市| 五大连池市| 余干县| 瑞昌市| 望都县| 阳高县| 邮箱| 洞口县| 靖安县| 吉林市| 治多县| 监利县| 会宁县| 潮安县| 陈巴尔虎旗| 三穗县| 花莲市| 健康| 连云港市| 永州市| 沂南县| 嘉鱼县|