【问题标题】:How do I access SOAP headers in a Spyne srpc method?如何在 Spyne srpc 方法中访问 SOAP 标头?
【发布时间】:2013-09-04 16:43:07
【问题描述】:

请原谅我只是粗心大意,但 Spyne documentation on headers 似乎有点细,并且指向示例代码的链接已损坏。我想我找到了示例代码here,但它似乎只能访问侦听器回调函数中的标头。如果可能,我需要在 srpc 方法中访问它。

我想做的是这样的(这不起作用):

class MyRequest(ComplexModel):
    Messages = Array(Unicode)

class MyHeader(ComplexModel):
    TrackingID = ByteArray

class MySoapService(ServiceBase):
    @srpc(MyRequest, _in_header=MyHeader)
    def PostMessages(req, hdr):
        logging.info(u'RECEIVED: {0:s}'.format(hdr.TrackingID))

如果有帮助,我将尝试替换用 .NET 编写的服务,该服务仅在消息合同中定义消息标头,如下所示:

[MessageContract]
public class MyRequest
{
  [MessageHeader]
  public Guid TrackingID { get; set; }

  [MessageBodyMember]
  public String[] Messages { get; set; }
}

【问题讨论】:

    标签: soap spyne


    【解决方案1】:

    您无法从 srpc 函数中读取标头数据。 @srpc 适用于您不想接触的现有功能。除非你知道你需要@srpc,否则你应该总是使用@rpc

    使用@rpc 装饰你的函数。这会将 rpc 上下文(通常命名为 ctx)作为第一个参数传递给您的函数。然后,您可以在 ctx.in_header 中找到标头数据。您还可以设置 ctx.out_header 来更改传出响应标头。

    此外,对文档的拉取请求对我来说是纯金:)

    【讨论】:

    • 我会试试这个。我只使用了@srpc,因为那是在入门示例中,我只是从那里扩展。这似乎是目前 Python 最好的 Web 服务库,如果我要使用它,我会尽量为文档做出贡献。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多