2012-11-02 2 views
2

제가 쓰는 웹 서비스에 문제가 있습니다 (asmx).SOAP 요청에서 매개 변수를 읽을 수 없습니다.

나는이 방법이 있습니다

[WebMethod()] 
    [SoapDocumentMethod(
     RequestNamespace="http://bsp.XXX.org", 
     ResponseNamespace="http://bsp.XXX.org", 
     ResponseElementName="PaymentResults", 
     RequestElementName="GetPaymentResult", 
     Action = "http://bsp.XXX.org/GetPaymentResult")] 
    public PaymentResult[] GetPaymentResult(string MerchantRef) 
    { 
     try 
     { 
      if (!String.IsNullOrEmpty(MerchantRef)) 
      { 
       return PaymentResultRepository.GetPaymentResults(MerchantRef).ToArray(); 
      } 
      else 
      { 
       _errorLog.Error("MerchantRef is empty"); 
      } 
     } 
     catch (Exception ex) 
     { 
      _errorLog.Error("Failed to get payment details", ex); 
     } 
     return new PaymentResult[0]; 
    } 
} 

을 그리고 오라클 Forms 응용 프로그램에서 호출되는 것. 받은 SOAP 요청은 다음과 같습니다

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
     xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" 
     xmlns:xsd="http://www.w3.org/1999/XMLSchema"> 
    <SOAP-ENV:Body> 
     <GetPaymentResult xmlns="http://bsp.XXX.org/" 
       SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
      <MerchantRef xsi:type="xsd:string"> 
       IP/58991/1 
      </MerchantRef> 
     </GetPaymentResult> 
    </SOAP-ENV:Body> 

문제는 "MerchantRef는"항상 내 방식에서 빈 문자열이다 ... 누군가는 이것에 대해 어떤 생각을 가지고? SOAP 요청이 잘못 되었습니까? 나는 명백한 것을 놓치고 있는가?

답변

2

이 그것을 완벽하게 작동 제거하면

그것은의 인코딩 스타일 속성을 좋아하지 않았다 ... 문제가 SOAP 요청이라고 밝혀졌습니다. 이 행

즉 :

<GetPaymentResult xmlns="http://bsp.XXX.org/" 
      SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 

행 :

<GetPaymentResult xmlns="http://bsp.XXX.org/"> 
관련 문제