cancel
Showing results for 
Search instead for 
Did you mean: 

Error .NET calling SAP XI web service

Former Member
0 Kudos

Hi,

When I do a simple web service call from a Visual Studio .NET 2005 generated Proxy, it works. But if I want to use WSE3 and change the class of the service proxy from SoapHttpClientProtocol to WebServicesClientProtocol. (like descriped here: <a href="http://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/121b053d-0401-0010-539f-f9295efb7bad">Creating a .NET Client for a SAP Java Web Service</a>)

I got the following error:


<SOAP:Fault>
´ <faultcode>SOAP:Server</faultcode>
  <faultstring>System Error</faultstring>
  <detail>
    <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
      <context></context>
      <code>PARSER.</code>
      <text></text>
    </s:SystemError>
  </detail>
</SOAP:Fault>

(SystemError has xi2.0 namespace??? but we use xi3.0)

I tried to find out where's the problem by manipulating the soap requests from .NET. The SoapHttpClientProtocol doesnt transfer any soap:Header and the WebServicesClientProtocol class transfers the following header:


<soap:Header>
  <wsa:Action>http ://sap.com/xi/WebService/soap1.1</wsa:Action>
wsa:MessageID>urn:uuid:2dc3c344-b97a-4933-9cca-f15be54e6c45</wsa:MessageID>
  <wsa:ReplyTo>
    <wsa:Address>http ://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
  </wsa:ReplyTo>
  <wsa:To>http: //server:8000/sap/xi/engine?type=entry&version=3.0&Sender.Service=DOT_NET_Webservice&Interface=http://www.server.com/xi/dotnet3/00^MI_DOT_NET_SECURE_SERVICE_Sync_Out</wsa:To>
  <wsse:Security>
    <wsu:Timestamp wsu:Id="Timestamp-10358da0-25cd-41f9-a55c-2901422450c8">
      <wsu:Created>2007-07-04T14:59:46Z</wsu:Created>
      <wsu:Expires>2007-07-04T15:04:46Z</wsu:Expires>
    </wsu:Timestamp>
  </wsse:Security>
</soap:Header>

I found out, that the following header also causes the same error:


<soap:Header>
  <wsa:test></wsa:test>
</soap:Header>

but this header causes no error:


<soap:Header>
  <test></test>
</soap:Header>

It looks like SAP XI has problems with the namespaces in the header.

What i have to do to call a SAP XI web service with Microsoft WSE3.

thank you

Accepted Solutions (1)

Accepted Solutions (1)

justin_santhanam
Active Contributor
0 Kudos

Thomas,

I read in the previous threads, that for this issue you have to overwrite the WSDL with version 3.0 namespace.I'm not sure whethe it will work or not But u can give a try.

Best regards,

raj.

Answers (2)

Answers (2)

Former Member
0 Kudos

now i installed XI/PI 7.0. I have exactly the same problem!!! has anyone an idea? what can i do?

Former Member
0 Kudos

here is my wsdl:


<wsdl:definitions name="MI_DOT_NET_SECURE_SERVICE_Sync_Out" targetNamespace="http://www.server.com/xi/dotnet3/00" xmlns:p2="urn:sap-com:document:sap:rfc:functions" xmlns:p1="http://www.server.com/xi/dotnet3/00" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types>
    <xsd:schema targetNamespace="urn:sap-com:document:sap:rfc:functions" xmlns="urn:sap-com:document:sap:rfc:functions" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="Z_RFC_SECURE_SERVICE">
        <xsd:complexType>
          <xsd:all>
            <xsd:element name="VALUE1" type="xsd:int" />
            <xsd:element name="VALUE2" type="xsd:int" />
          </xsd:all>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="Z_RFC_SECURE_SERVICE.Response">
        <xsd:complexType>
          <xsd:all>
            <xsd:element name="RESULT" type="xsd:int" />
          </xsd:all>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="p2.Z_RFC_SECURE_SERVICEInput">
    <wsdl:part name="parameters" element="p2:Z_RFC_SECURE_SERVICE" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" />
  </wsdl:message>
  <wsdl:message name="p2.Z_RFC_SECURE_SERVICEOutput">
    <wsdl:part name="parameters" element="p2:Z_RFC_SECURE_SERVICE.Response" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" />
  </wsdl:message>
  <wsdl:portType name="MI_DOT_NET_SECURE_SERVICE_Sync_Out">
    <wsdl:operation name="MI_DOT_NET_SECURE_SERVICE_Sync_Out">
      <wsdl:input message="p1:p2.Z_RFC_SECURE_SERVICEInput" />
      <wsdl:output message="p1:p2.Z_RFC_SECURE_SERVICEOutput" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="MI_DOT_NET_SECURE_SERVICE_Sync_OutBinding" type="p1:MI_DOT_NET_SECURE_SERVICE_Sync_Out" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
    <wsdl:operation name="MI_DOT_NET_SECURE_SERVICE_Sync_Out">
      <soap:operation soapAction="http://sap.com/xi/WebService/soap1.1" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
      <wsdl:input>
        <soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
      </wsdl:input>
      <wsdl:output>
        <soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="MI_DOT_NET_SECURE_SERVICE_Sync_OutService">
    <wsdl:port name="MI_DOT_NET_SECURE_SERVICE_Sync_OutPort" binding="p1:MI_DOT_NET_SECURE_SERVICE_Sync_OutBinding" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
      <soap:address location="http://server:8000/sap/xi/engine?type=entry&amp;version=3.0&amp;Sender.Service=DOT_NET_Webservice&amp;Interface=http%3A%2F%2Fwww.server.com%2Fxi%2Fdotnet3%2F00%5EMI_DOT_NET_SECURE_SERVICE_Sync_Out" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>

What should I change???