有很长一段时间没有写博客了。最近一年,收到不少交流邮件都是关于webservice,大部分都是素要webservice实例。
其实对webservice 了解不是很深,只是根据工作需要去接触,去学习。最近项目和其他一个.net项目需要做数据交互,交互方式就采用Webservice.
特将开发中遇到的问题总结并分享;
开发中遇到的问题有:
1)java和.net 的默认namespace问题;
2)两者产生的SOAP文件格式不一致,有三种,Microsoft的;IBM的,通过抓包工具可以获得java产生的Soap消息
3)入参的数据类型会影响调用的正确性;
环境说明
a.java作为web service 的客户端去调用 .Net Web Service的服务端;
b.采用 axis 版本1.4;
c..net webservice 采用Microsoft Visual Studio 2008开发;
1. .Net webservice 服务端
.net 提供的webservice 链接:http://******/WebService/AsRptToStdService.asmx;
其中采用Soap 作为消息交互。
信息如下:
Request/请求:
POST /globalequitydata/WebService/AsRptToStdService.asmx HTTP/1.1
Host: szeqdatabeta0.morningstar.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/AsRptToStd"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<AsRptToStd xmlns="http://tempuri.org/">
<strCID>string</strCID>
<longRowFileDocumentId>long</longRowFileDocumentId>
<strAsRptFilePath>string</strAsRptFilePath>
</AsRptToStd>
</soap:Body>
</soap:Envelope>
Response/响应
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length