请原谅我,如果我只是很厚,但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; }
}
答案 0 :(得分:0)
您无法从srpc函数中读取标题数据。 @srpc适用于您不想触摸的现有功能。除非您知道需要@srpc
,否则应始终使用@rpc使用@rpc装饰你的功能。这会将rpc上下文(通常命名为ctx)作为函数的第一个参数传递。然后,在ctx.in_header中找到标题数据。您还可以设置ctx.out_header来更改传出响应标头。
另外,拉取文档请求对我来说是纯粹的金币:)