2013-06-26 4 views
5

WCF 클라이언트와 Java에서 사용중인 WCF 웹 서비스가 있습니다. .net 클라이언트는 정상적으로 작동하지만 Java 클라이언트는 통신을하지 못하고 아래 오류가 발생합니다.Java 클라이언트가 WCF 서비스를 사용할 수 없습니다.

<s:Fault> 
    <faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none" xmlns="">a:ActionNotSupported</faultcode> 
    <faultstring xml:lang="en-US" xmlns="">The message with Action '' cannot be processed at the receiver, due to a ContractFilter mismatch at the EndpointDispatcher. This may be because of either a contract mismatch (mismatched Actions between sender and receiver) or a binding/security mismatch between the sender and the receiver. Check that sender and receiver have the same contract and the same binding (including security requirements, e.g. Message, Transport, None).</faultstring> 
</s:Fault> 

두 요청을 모두 캡처했지만 실제 문제를 파악할 수 없습니다.

.net 클라이언트가 보낸 요청입니다.

<MessageLogTraceRecord> 
    <HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace"> 
    <Method>POST</Method> 
    <QueryString></QueryString> 
    <WebHeaders> 
     <Connection>Keep-Alive</Connection> 
     <Content-Length>277</Content-Length> 
     <Content-Type>text/xml; charset=utf-8</Content-Type> 
     <Expect>100-continue</Expect> 
     <Host>devint</Host> 
     <VsDebuggerCausalityData>uIDPoz4EUGTdY91Co1FESc2IENsAAAAAfpHU4m1Iok+wSxmrwkiWZ9iNzD51RjZMnpnEBbceBDcACQAA</VsDebuggerCausalityData> 
     <SOAPAction>"http://tempuri.org/Test/IsPilotUser"</SOAPAction> 
     <X-Forwarded-For>xx.xxx.xxx.xxx</X-Forwarded-For> 
     <X-Optier-Context-Address>43143760</X-Optier-Context-Address> 
    </WebHeaders> 
    </HttpRequest> 
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Header> 
     <To s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://service url here</To> 
     <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/Test/IsPilotUser</Action> 
    </s:Header> 
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <IsPilotUser xmlns="http://tempuri.org/"> 
     <UserID>AA</UserID> 
     </IsPilotUser> 
    </s:Body> 
    </s:Envelope> 
</MessageLogTraceRecord> 

는 아래의 자바에 의해 생성 된 요청

<MessageLogTraceRecord> 
    <HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace"> 
    <Method>POST</Method> 
    <QueryString></QueryString> 
    <WebHeaders> 
     <Cache-Control>no-cache</Cache-Control> 
     <Connection>keep-alive</Connection> 
     <Pragma>no-cache</Pragma> 
     <Content-Length>1414</Content-Length> 
     <Content-Type>text/xml; charset=utf-8</Content-Type> 
     <Accept>text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2</Accept> 
     <Host>devint</Host> 
     <User-Agent>Java/1.6.0_25</User-Agent> 
     <SOAPAction>""</SOAPAction> 
     <X-Optier-Context-Address>43526520</X-Optier-Context-Address> 
    </WebHeaders> 
    </HttpRequest> 
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header"> 
     <hdr:RequestID xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header">287933.1372254929205.341301</hdr:RequestID> 
     <hdr:Timestamp xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header">1372254929205</hdr:Timestamp> 
     <hdr:Principal xmlns:hdr="http://xml.example.com/ns/appmw/soap/1.0/header"> 
     <saml:Assertion xmlns:saml="http://xml.example.com/ns/appmw/soap/1.0/saml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Issuer="PingFederate SiteMinder SOAP Connector" xsi:type="saml:AuthenticationAssertionType"> 
      <saml:Subject> 
      <saml:NameIdentifier> 
       <saml:SecurityDomain>KerberosID</saml:SecurityDomain> 
       <saml:Name>None</saml:Name> 
      </saml:NameIdentifier> 
      <saml:SubjectConfirmation> 
       <saml:AuthenticationMethod>Netegrity</saml:AuthenticationMethod> 
       <saml:SubjectConfirmationData>None</saml:SubjectConfirmationData> 
      </saml:SubjectConfirmation> 
      </saml:Subject> 
     </saml:Assertion> 
     </hdr:Principal> 
     <To SOAP-ENV:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://service url here</To> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <pf:AttributesRequest xmlns:pf="http://xml.ms.com/ns/webinfra/pingfederate/sso-attributes"> 
     <pf:Data> 
      <pf:HumanNo></pf:HumanNo> 
      <pf:Originator>None</pf:Originator> 
      <pf:UniqueID>None</pf:UniqueID> 
     </pf:Data> 
     <pf:Attribute> 
      <pf:Name>IsPilotUserResult</pf:Name> 
     </pf:Attribute> 
     </pf:AttributesRequest> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 
</MessageLogTraceRecord> 

나는 자바에 익숙하므로, 어떠한 도움을 이해할 수있을 것이다 아닙니다 클라이언트 -됩니다. 닷넷이 하나의 전송 동안

SOAPAction="" 

:

답변

5

자바 클라이언트는이 HTTP 헤더를 전송

SOAPAction="http://tempuri.org/Test/IsPilotUser" 

가 올바른 값을 전송하기 위해 자바 클라이언트를 강제로.

관련 문제