Ⅰ java dom4j生成有前綴節點的 xml,節點類似soapenv:Envelope模樣
soapenv:Envelope
可以當作一個節點的名字。。。。。。
Ⅱ soap error 12,在線等,急!!!!!!!!!!!!!!!
就是在java的webservice中發生空指針異常,看看的webservice中是不是 有沒實例化得對象。
你需要debug看看。
或者客戶端根本沒進入到這個方法,而且可能這一個伺服器正常,另外一個伺服器就出現上述錯誤~
Ⅲ java 調用 .net web service 問題
.java作為web service 的客戶端去調用 .Net Web Service的服務端;
開發中遇到的問題及其解決辦法有如下
1)java和.net 的默認namespace問題;
解決方案: java:http://tempuri.org
.net :http://tempuri.org/
區別就是符號「/」;如果不帶「/」產生的結果會出錯;
問題解決:統一加上「/」;
2)兩者產生的SOAP文件格式不一致,有三種,Microsoft的;IBM的,通過抓包工具可以獲得java產生的Soap消息
解決方案:SOAP 消息頭問題,從上面抓包的信息可以看出:請求的是<soapenv:Envelope 而response的是<soap:Envelope
這是由於不同的服務商封裝成的不同格式的soap ,但都是遵循SOAP,可以通用;
Microsoft的是 <soap:Envelope ,而IBM的是 <soapenv:Envelope ;
3)入參的數據類型會影響調用的正確性;
解決方案:
第二個參數的入參是long型。如果修改make1方法的String 型成 long 型,則程序異常;
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (1, 440). ---> System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Xml.XmlConvert.ToInt64(String s)
其實我們只需要在參數設置裡面設成org.apache.axis.encoding.XMLType.XSD_LONG;
Ⅳ 關於java,soap伺服器端的代碼怎麼寫
<soapenv:Header/>
<soapenv:Body>
<api:getEmp>
<shopId>string</shopId>
</api:getEmp>
</soapenv:Body>
</soapenv:Envelope>
這個時SOAP協議的標准報文格式,客戶端只要發送這樣的報文給支持SOAP協議的webservice伺服器即可成功調用web service服務
服務端:部署服務只需要自己定義服務的介面和實現類,並用@webservice註解,通過endPoint類直接發布即可
Ⅳ 用java 調用python webservice 是怎麼調的
這次出差,我接觸最多的是spss,由於項目基於j2ee開發,而java又不能直接取得spss統計結果,好在spss對python的支持還行,最終成功實現了這個模塊。感謝前輩們做出的貢獻,沒有你們,我就不能這樣迅速、順利的完成項目,且別說寫這篇文章了。
在前期准備中,我摸索、嘗試了三種實現:jython,http,soap,在網上查了很多相關資料,都是只言片語,自己看了還要結合其他的資料才能弄個明白。當然,在這探索的過程中,我是幸運的,每天都讓我充滿驚喜,每天都有新的收獲。
jython是java版本的python,也就是java的完全實現。java代碼中,可以調用python的方法,缺點是,jython中導入第三方python mole時,不是那麼回事。因為spss的python api主要是一個.pyd的二進制文件,jython導包是按照java的位元組碼來導入的,所以當在jython中導入spss的python api時會出錯,這個想法徹底破滅。
http實現是在現有的B/S交互實現上突發奇想的,python中實現一個簡單的web server只要幾十行代碼,java使用apache的httpclient訪問,現在想來確實有點大材小用,自己寫一個http socket來請求和響應也寫不了多少代碼。最後還是實現了,支持spss中文,但是數據封包都要自己來實現,還是有嫌麻煩。
soap實現最簡單,server端幾十行代碼搞定。由於我把spss命令都封裝到一個方法中執行了,所以就沒有用wsdl來生成java代碼了,我使用了較底層的java的http socket,手動對SOAP-ENV打包,並向server端請求,手動解析響應數據。缺點是:SOAP對中文的支持,無論怎麼轉碼,不是python解析SOAP-ENV報錯,就是python執行spss命令報錯。