Retrofit 用Soap协议访问WebService 详解

  • 时间:
  • 浏览:1

有soap1.1,soap1.2的区别,请求的header不同,xml的内容也略有不同啦~~

跳转阅读》》》【 WebService 基础知识点和用Postman调试】,qq克隆好友 了每项内容过来

(1)app 的 builde.gradle再加依赖库

1、RequestBody和ResponseBody的基本参数太多说

2、根据网站提供的范例,soap1.1和soap1.2的RequestHeader是不一样的,对应的@Body中的ResquetBody也是不一样的

就说 把数据封装下 bean顶端,看的舒服之前 ,符合以前用json,resetful风格的有有哪些请求

1、xmlns后基本不是namespace,比如envelopse标签有三个 多namespace,getSupportCity這個 法律法子名有三个 多namespace

2、区分soap1.1的是:【xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"】

3、soap1.1的请求header有:【Content-Type: text/xml; charset=utf-8 】和【SOAPAction: "http://WebXml.com.cn/getSupportCity"】

显然status,description,tableUpdateTime是固定格式,updateData顶端是CDATA的数据,先不理他...

以上就说 对用retrofit访问webservice的之前 感悟,还没办法 考虑继续封装。。

(3)、body下具体的response

(3)、body内的请求法律法子getSupportCity,还有法律法子内的参数byProvinceName

(1)、最外层envelopse :@Element(name = "Body", required = false)

(2)、envelopse内的body层:@Root(name = "Body", strict = false) //this is Body , not soap:Body

这里一定要注意,有三个 多坑,就说 在RetrofitSoapClient中的转换中时需再加

【.addConverterFactory(ScalarsConverterFactory.create())】之前 传的string会混乱,不符合soap协议格式,之前 三种 报错,说SoapVersion用错啥的~~((((ToT)†~~這個 随便说说浪费了之前 时间

(2)、envelopse内的body层

1、略,同上

2、区分soap1.2的是:【xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"】

3、soap1.2的请求header有:【application/soap+xml; charset=utf-8 】和没办法 【SOAPAction】

1、首先太多说把這個 想的太冗杂,它就说 使用【soap】协议的请求,数据格式不是【xml】,基础还是http的post请求,之前 它的规范显然更多之前 ,总体逃不过【Request和Response】。

2、以下所有的范例不是使用 【 WeatherWebService 】 這個 网站,它提供了【Soap1.1 和 Soap1.2 】的请求范例,有【Request和Response】报文可看,没办法 更好理解规范和格式

(4)、response下的结果集,还比较简单,不是三个 多element下面多组数据

1、结合Retrofit使用post请求访问WebService

2、retrofit2调用webservice-2.基本实现

(2)Retrofit的访问工具类

(1)、最外层envelopse