首頁  >  文章  >  Java  >  Java如何呼叫.NET中WebService的實例

Java如何呼叫.NET中WebService的實例

黄舟
黄舟原創
2017-09-18 09:46:541461瀏覽

下面小編就為大家帶來一篇Java客戶端呼叫.NET的WebService實例。小編覺得蠻不錯的,現在就分享給大家,也給大家做個參考。一起跟著小編過來看看吧

專案要去呼叫.NET的WebSrevice,本身就是Java,研究了半天,終於有些頭緒,記下來。

1,新建.NET WebService。只在原方法上加上一個string類型的參數str


[WebMethod]
public string HelloWorld(string str)
{
  return "Hello World";
}

2,新建Java的WebService客戶端,lib引入以下5個jar包(我是用idea產生的WebService客戶端,會下載7個包,我試著刪掉了log4j和saaj兩個包也能正常運行)


##

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
 
public class HelloWorldClient {
 public static void main(String[] argv) {
   String endpoint ="http://localhost:64662/WebService1.asmx?wsdl";
   try {
     // 定义服务
     Service service = new Service();
     Call call = (Call) service.createCall();
     call.setTargetEndpointAddress(endpoint);
     call.setOperationName(new QName("http://tempuri.org/", "HelloWorld"));
     call.setSOAPActionURI("http://tempuri.org/HelloWorld");
     call.addParameter(new QName("http://tempuri.org/", "str"),// 这里的str对应webservice参数名称
         XMLType.SOAP_STRING, ParameterMode.IN);
     call.setReturnType(XMLType.SOAP_STRING);
     String retVal1 = (String) call.invoke(new Object[] {"Hello World!"});
     System.out.println(retVal1);
   } catch (Exception e) {
     e.printStackTrace();
   }
 }
}

註:

1,網路上看到有直接寫成call.setOperationName("HelloWorld"),我試過不行。不知道是不是跨語言的原因。

2,網路上也看到省略call.setSOAPActionURI這 一句的,但我的報錯了。

3,其實專案的WebService裡面用的參數是實體,我試著Java端透過XMLType.XSD_ANYTYPE類型傳實體過去,結果說類型沒註冊之類的。網路上看有方案比較繁瑣,倒不如將實體序列化成Json串傳過去省事。

4,參數的命名空間參考服務頁面

以上是Java如何呼叫.NET中WebService的實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn