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

gSOAP 能否調用 WCF wsHttpBinding 服務?實測不支援,需改用 basicHttpBinding

     編輯:程式設計綜合問答

gSOAP 2.8 僅支援基本 SOAP 1.1/1.2 協議,不支援 WCF wsHttpBinding 所需的 WS-* 標準(WS-Security、WS-ReliableMessaging、WS-Addressing 等),導致無法調用該綁定類型的服務。

驗證結論

  • gSOAP 可正常調用 basicHttpBinding(相當於 ASMX 風格,純 SOAP over HTTP)。
  • 嘗試調用 wsHttpBinding 時報錯:安全協商失敗、消息版本不匹配、地址頭缺失等。
  • 網上無現成 gSOAP 配置 wsHttpBinding 成功案例。

解決方案

  1. 服務端改用 basicHttpBinding(最快):修改 WCF 配置 <endpoint binding="basicHttpBinding" ... />,gSOAP 即可直接調用。
  2. 客戶端換用支援 WS-* 的庫:如 WCF C++ 客戶端(微軟提供)、Apache CXF C++、或用 C# 寫中間層轉發。
  3. 降級協議:若無法修改服務端,考慮在服務端增加一個 basicHttpBinding 端點並行暴露。

配置示例(服務端並行暴露雙端點)

<services>
  <service name="MyService">
    <endpoint address="basic" binding="basicHttpBinding" contract="IMyContract" />
    <endpoint address="ws" binding="wsHttpBinding" contract="IMyContract" />
  </service>
</services>

gSOAP 適合輕量級 SOAP 互操作,複雜企業級 WS-* 場景請選用成熟 WCF/CXF 棧,避免在協議層鑽牛角尖。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved