2013-09-04 2 views
0

만약 내가 두꺼운지만 Spyne documentation on headers 조금 얇은 것 및 샘플 코드에 대한 링크가 깨졌습니다 나를 용서하십시오. 나는 샘플 코드 here을 찾았지만 리스너 콜백 함수의 헤더에만 액세스하는 것으로 보인다. 가능한 경우 srpc 방법으로 액세스해야합니다. Spyne srpc 메서드에서 SOAP 헤더에 어떻게 액세스합니까?

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

srpc 함수 내에서 헤더 데이터를 읽을 수 없습니다. @srpc는 터치하고 싶지 않은 기존 기능을위한 것입니다. @srpc가 필요하지 않다면 항상 @rpc를 사용해야합니다.

@rpc를 사용하여 기능을 장식하십시오. 이렇게하면 rpc 컨텍스트 (일반적으로 ctx라고 함)가 함수의 첫 번째 인수로 전달됩니다. 그런 다음 ctx.in_header는 헤더 데이터를 찾을 수있는 곳입니다. 보내는 응답 헤더를 변경하도록 ctx.out_header를 설정할 수도 있습니다.

또한 docs 풀 요청은 내게 순수한 금이다.

+0

나는 이것을 시도 할 것이다. @srpc는 시작 예제에 포함되어 있었고 방금 확장되었습니다. 이것은 파이썬을위한 최고의 웹 서비스 라이브러리 인 것처럼 보입니다. 사용하고 싶다면 가능한 경우 문서에 기여하려고 노력할 것입니다. – ThatAintWorking

관련 문제