【发布时间】:2016-08-11 12:14:47
【问题描述】:
我已经根据其他人的堆栈溢出代码完成了大部分工作。见下文。
我目前的问题是我仍然遇到授权失败,我可以清楚地看到原因。 v2 API 需要传递 X-IBM-Client-Id 和 X-IBM-Client-Secret 以及 SOAP 安全标头。 但是,我不知道在使用从 Wsdl 文件创建的服务时如何注入它.
已解决的问题:
克服命名空间问题(使用消息格式化程序Consume WCF Royal Mail API in c# Console Application)。
解决了导致两个安全标头的绑定配置问题。此外,如果您希望在检索标签时不出现异常,则必须设置 maxReceivedMessageSize。最终绑定:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicBindingTransport" maxReceivedMessageSize="2147483647">
<security mode="Transport">
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://api.royalmail.net/shipping/v2" binding="basicHttpBinding"
bindingConfiguration="basicBindingTransport" contract="RoyalMailApiWsdl.shippingAPIPortType" name="shippingAPIPort" />
</client>
</system.serviceModel>
解决了 E0007 授权失败问题。
已解决 HTTP 请求未通过客户端身份验证方案“匿名”进行授权(您必须将上述绑定与安全“传输”一起使用,并将凭据直接注入 http post 标头本身(请参阅下面的答案)。
还有很多其他的问题,我现在不记得了。我希望这篇文章对其他人有所帮助。
【问题讨论】: