首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 呼叫 C# ASMX WebService 參數為 null:SOAP 封包格式錯誤

     編輯:程式設計綜合問答

問題根因

手動拼接 SOAP XML 時,命名空間、節點結構、編碼不符合標準,導致伺服端反序列化失敗,參數讀為 null。

錯誤封包片段

<cnono>17</cnono>  // 缺少命名空間、父節點結構不完整

標準 SOAP 1.1 範本

POST /StockTest/Service1.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
SOAPAction: "https://tempuri.org/MethodName"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="https://www.w3.org/2001/XMLSchema" 
               xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <MethodName xmlns="https://tempuri.org/">
      <paramName>value</paramName>
    </MethodName>
  </soap:Body>
</soap:Envelope>

iOS 正確實作建議

  1. 使用成熟庫(AFNetworking + SOAPEngine、Alamofire + XML 解析)自動生成/解析 SOAP。
  2. 若必須手工拼接,嚴格遵循 WSDL 定義的 targetNamespace、參數順序、類型映射。
  3. 啟用伺服端追蹤(traceEnabled="true")對比正確/錯誤請求原始封包。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved