webservice soap
调试webService的接口,采用的soap协议,一直遇到一个问题,ErroeCode:415 unsupported media type,对于整个问题纠结了好久,一开始服务器有问题,改好后,请求还是出错。今天在网上找到如下的一段文字(见参考连接1),在加上一牛人的推荐的soapUI的工具,通过裸发soap报文,找到了问题的所在。
soap 1.1拚出的Http request中的是xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
而soap1.2,则是xmlns:soap=" http://www.w3.org/2003/05/soap-envelope",服务器那里好像只支持1.1,所以把代码中的http request中1.2的结点替换掉。重新发送请求,事情不是那么顺利,ResponseStatus: 200, Unexpected response MIME type to SOAP call:text/xml,于是全局搜索,把application/soap+xml替换为text/xml。再次运行,成功,没有问题。至此,这个问题从服务器端到客户端的联调花了整整一天。
至此,可以尝试不使用工具wsdl2ObjC,自己拚发报文soap+xml,封装方法,就是会比较麻烦了,会浪费很多时间了。
参考资料:http://www.ehow.com/info_12211077_415-unsupported-media-type.html
http://www.devdiv.com/iOS_iPhone-使用wsdl2objc实现web_service_soap的sample-thread-36521-1-1.html
http://code.google.com/p/wsdl2objc/wiki/UsageInstructions
使用的工具:wsdl2Objc
设置:add frameworks: libxml2.dylib CFNetwork.framework
other linker flags : -ObjC -all_load _lxml2
Header search paths ${SDKROOT}/usr/include/libxml2