2010-11-15 29 views
6

Tôi đang cố gắng sử dụng Dịch vụ web SAP từ .NET qua WCF. Tôi đã tạo proxy và tôi đã định cấu hình tệp app.config.Dịch vụ web SAP từ .NET qua WCF

Đây là mã của tôi kiểm tra:

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();    

Phương pháp SAP ZTestRFC là một chức năng rất đơn giản mà chấp nhận một chuỗi đầu vào, và đầu ra: "Result: <the input string>"

Khi tôi gọi phương thức ZTestRFC, tôi có một null giá trị trong phản hồi biến. Nhưng các thông báo SOAP có vẻ ổn.

SOAP Request

<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 đáp ứng

<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> 

Tôi không biết những gì có thể xảy ra. Bất kỳ ý tưởng?

Cảm ơn trước

Trả lời

3

sửa soạn trước, nó trông giống như khi bạn đã tạo proxy (BTW, những gì kỹ thuật mà bạn đã sử dụng để làm điều đó?), SAP nói NET rằng tham số và phản ứng sẽ là trong một số không gian tên , nhưng bạn đang gửi tham số trong không gian tên trống (""). Đó có thể là lý do dịch vụ SAP trả về "Kết quả:". Bạn có thể nhận được một phản hồi null vì proxy của bạn có thể mong đợi phần tử TestOutput ở trong một không gian tên khác.

Xem các lớp proxy đã tạo và xem không gian tên nào được mong đợi.

+0

Cảm ơn câu trả lời của bạn John. Tôi đã sử dụng VS2008 để tạo ra các lớp proxy. Tôi đã kiểm tra không gian tên được xác định trong proxy, nhưng tại thời điểm này tôi đã không thành công: _ (Tôi sẽ cung cấp cho bạn thông tin phản hồi – Javier

+0

@Javier: bạn có sử dụng "Thêm tham chiếu web", "Thêm tham chiếu dịch vụ" hay không ? –

+0

Tôi đã sử dụng Thêm dịch vụ tham khảo với URL wsdl. Cảm ơn – Javier

Các vấn đề liên quan