0

如果我只是粗心大意,请原谅我,但标头上的Spyne 文档似乎有点薄,并且指向示例代码的链接已损坏。我想我在这里找到了示例代码,但它似乎只能访问侦听器回调函数中的标头。如果可能,我需要在 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; }
}
4

1 回答 1

0

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

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

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

于 2013-09-05T11:52:45.027 回答