Flutter 发送SOAP请求

第三方插件

xml: ^5.3.1
http: ^0.13.3

RequestBody

String _requestBody = '''<?xml version="1.0"?>
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bru="http://www.glory.co.jp/bruebox.xsd">
       <soapenv:Header/>
       <soapenv:Body>
          <bru:StatusRequest>
             <!--Optional:-->
             <bru:Id>?</bru:Id>
             <bru:SeqNo>?</bru:SeqNo>
             <!--Optional:-->
             <bru:SessionID>?</bru:SessionID>
             <Option bru:type="?"/>
             <!--Optional:-->
             <RequireVerification bru:type="?"/>
          </bru:StatusRequest>
       </soapenv:Body>
      </soapenv:Envelope>''';

发起POST请求

http.Response response = await http.post(_url,
        headers: {
          "SOAPAction": "wsdl文档中对应的SOAPAction",
          "Content-Type": "text/xml;charset=UTF-8",
          "Authorization": "Derek",
          "cache-control": "no-cache"
        },
        body: utf8.encode(_requestBody),
        encoding: Encoding.getByName("UTF-8"));

解析返回的数据

XmlDocument document =  XmlDocument.parse(response.body);
final values = document.findAllElements('key');
if (values.isNotEmpty) {
    values.map((e) => e.text).forEach((element) { 
        print(element)
    });
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容