Knight of the round table

          wansong

          Java調(diào)用.NET webservice方法的幾種方式

          http://liyuandong.javaeye.com/blog/567836

          JAVA用這種方式調(diào)用webservice,需要注意的地方:
          1. 服務(wù)器未能識(shí)別 HTTP 標(biāo)頭 SOAPAction 的值:
          癥狀一:
          Web Service + ASP.NET 應(yīng)用程序部署到服務(wù)器默認(rèn)目錄中,在IE中用http://<服務(wù)器地址>/<程序目錄名>/<默認(rèn)啟動(dòng)頁面名>發(fā)生“服務(wù)器未能識(shí)別 HTTP 標(biāo)頭 SOAPAction 的值”錯(cuò)誤。
          癥狀二:
          在Java平臺(tái)上調(diào)用.NET Web Service的服務(wù)時(shí),出現(xiàn)"服務(wù)器未能識(shí)別 HTTP 標(biāo)頭 SOAPAction 的值"。
          癥狀三:
          在Java平臺(tái)下調(diào)用.NET WEB Service,出現(xiàn)數(shù)據(jù)時(shí)有時(shí)無。

          解決對策:

          給.NET的WebService類(即.asmx文件下的類)添加屬性[SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)]
          小知識(shí):
          什么是SoapAction?它在WSDL中有何作用?
          SOAPAction HTTP request header被用來標(biāo)識(shí)SOAP HTTP請求的目的地,其值是個(gè)URI地址。SOAP發(fā)送并不限制格式、URI特征或其必須可解析,那么在這種情況下,發(fā)送一個(gè)HTTP SOAP請求時(shí),其HTTP客戶端必須使用/指明SOAPAction HTTP request header。

          SOAPAction header的內(nèi)容可以被用在服務(wù)端,諸如:防火墻適當(dāng)?shù)倪^濾基于HTTP的SOAP請求消息等場景。SOAPAction header的值為空串("")表示SOAP消息的目的地由HTTP請求的URI標(biāo)識(shí);無值則表示沒有指定這條消息的目的地。

          本人補(bǔ)充:
          在.NET環(huán)境調(diào)用.NET WebService出現(xiàn) “SOAPAction 值在 XML Web services 的所有方法中不唯一的錯(cuò)誤”,也可以通過此法解決。

          2. 為了Java能夠調(diào)用WebService的方法,所以。NETP寫的WebServiced的每個(gè)方法都要聲明為Rpc方法,即添加"[SoapRpcMethod.....]".
          例如:[WebMethod]
                  [SoapRpcMethod(Use=SoapBindingUse.Literal,Action= http://tempuri.org/HelloWorld", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/")]

          3. 對返回值、參數(shù)的處理上:
          應(yīng)盡量將webservice方法的返回值、參數(shù)都寫成字符串(String)不要使用復(fù)雜對象類型,這樣便于在網(wǎng)絡(luò)上傳輸。避免了復(fù)雜對象類型的不易轉(zhuǎn)換問題。。。對于返回類型是字符串?dāng)?shù)組型的,可以設(shè)置返回類型為org.apache.axis.encoding.XMLType.SOAP_VECTOR或java.lang.String[].class.

          posted on 2010-12-17 13:05 w@ns0ng 閱讀(1081) 評論(0)  編輯  收藏 所屬分類: J2EEweb service

          主站蜘蛛池模板: 张家川| 华坪县| 清丰县| 阿瓦提县| 双鸭山市| 博客| 郁南县| 洛宁县| 德格县| 和硕县| 乌兰浩特市| 汝州市| 峨眉山市| 广宗县| 任丘市| 灌南县| 双辽市| 太谷县| 平乡县| 林周县| 乐业县| 建阳市| 甘肃省| 日喀则市| 玉山县| 泰和县| 通化市| 县级市| 绩溪县| 新河县| 兴山县| 宝山区| 鄂州市| 安新县| 南召县| 类乌齐县| 迁安市| 平陆县| 新乐市| 永济市| 崇文区|