2010-11-15 15 views
6

Próbuję pobrać usługę sieciową SAP z usługi .NET za pośrednictwem WCF. Wygenerowałem proxy i skonfigurowałem plik app.config.Usługa sieci Web SAP firmy .NET za pośrednictwem WCF

Tu jest mój kodu testu:

WebServiceSAP.ZTEST_RFCClient myWCFService = new WebServiceSAP.ZTEST_RFCClient("MyEndPoint"); 

myWCFService.ClientCredentials.UserName.UserName = "<UserName>"; 
myWCFService.ClientCredentials.UserName.Password = "<Password>"; 

WebServiceSAP.ZTestRfc parameter = new WebServiceSAP.ZTestRfc(); 
parameter.TestInput = "This is a simple test"; 

WebServiceSAP.ZTestRfcResponse response = myWCFService.ZTestRfc(parameter); 

Console.WriteLine(reponse.TestOutput); 
Console.ReadLine();    

Sposób SAP ZTestRFC jest bardzo prosta funkcja, która akceptuje ciąg wejściowy i wyjścia: "Result: <the input string>"

Kiedy wywołać metodę ZTestRFC, mam null wartość w zmiennej odpowiedzi. Ale komunikaty SOAP wydają się być w porządku.

SOAP Zapytanie

<MessageLogTraceRecord> 
<HttpRequest xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace"> 
<Method>POST</Method> 
<QueryString></QueryString> 
<WebHeaders> 
<VsDebuggerCausalityData>uIDPoxJmI5NcDatNiPM/wFAr52kAAAAAtqHAVnNWjEeMpMExOyr/vN7OXwCJZltNnikldpg5migACQAA</VsDebuggerCausalityData> 
</WebHeaders> 
</HttpRequest> 
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Header> 
<Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">urn:sap-com:document:sap:soap:functions:mc-style:ZTEST_RFC:ZTestRfcRequest</Action> 
</s:Header> 
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<ZTestRfc xmlns="urn:sap-com:document:sap:soap:functions:mc-style"> 
<TestInput xmlns="">This is a simple test</TestInput> 
</ZTestRfc> 
</s:Body> 
</s:Envelope> 
</MessageLogTraceRecord> 

SOAP Response

<MessageLogTraceRecord> 
<HttpResponse xmlns="http://schemas.microsoft.com/2004/06/ServiceModel/Management/MessageTrace"> 
<StatusCode>OK</StatusCode> 
<StatusDescription>OK</StatusDescription> 
<WebHeaders> 
<Content-Length>359</Content-Length> 
<Content-Type>text/xml; charset=utf-8</Content-Type> 
<Set-Cookie>MYSAPSSO2=AjExMDABAAxQMDEwMDA1MSAgICACAAMwNDADAAhEMTEgICAgIAQADDIwMTAxMTEwMTIwOQUABAAAAAgGAAFYCQABU%2f8A9jCB8wYJKoZIhvcNAQcCoIHlMIHiAgEBMQswCQYFKw4DAhoFADALBgkqhkiG9w0BBwExgcIwgb8CAQEwEzAOMQwwCgYDVQQDEwNQMTECAQAwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTEwMTExMDEyMDk0OFowIwYJKoZIhvcNAQkEMRYEFJC%2fNFLVBnu1ZAodWTlPApEs8sApMAkGByqGSM44BAMEMDAuAhUBS844BOB%2f8NgEGuepMgLaKbVEGGUCFQFLs6HiI%21BWT1MejMqvABd3%2fJFVMw%3d%3d; path=/; domain=.<domain ... ></Set-Cookie> 
<Server>SAP NetWeaver Application Server/ABAP 700</Server> 
</WebHeaders> 
</HttpResponse> 
<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
<s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"></s:Header> 
<SOAP-ENV:Body> 
<rfc:ZTestRfcResult xmlns:rfc="urn:sap-com:document:sap:soap:functions:mc-style"> 
<TestOutput xmlns="">Result:</TestOutput> 
</rfc:ZTestRfcResult> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 
</MessageLogTraceRecord> 

nie wiem, co może się dziać. Jakieś pomysły?

góry dzięki

Odpowiedz

3

bezceremonialny, wygląda podczas tworzenia proxy (BTW, co technika użyłeś to zrobić?), SAP powiedział .NET, że parametr a odpowiedź będzie w jakiejś przestrzeni nazw , ale wysyłasz parametr w pustej przestrzeni nazw (""). Być może dlatego usługa SAP zwraca "Wynik:". Być może otrzymujesz odpowiedź zerową, ponieważ twój serwer proxy może oczekiwać, że element TestOutput będzie w innym obszarze nazw.

Sprawdź wygenerowane klasy proxy i zobacz, jakie spacje są oczekiwane.

+0

Dzięki za odpowiedź John. Użyłem VS2008 do generowania klas proxy. Sprawdziłem przestrzenie nazw zdefiniowane w proxy, ale w tej chwili mi się to nie udaje: _ (udzielę ci opinii: – Javier

+0

@Javier: czy używałeś "Dodaj odniesienie do strony internetowej", "Dodaj odniesienie do usługi" lub ? –

+0

Użyłem Dodaj usługi referente z adresem URL wsdl.Dzięki – Javier

Powiązane problemy