2010-11-15 11 views
6

के माध्यम से .NET से एसएपी वेब सेवा। मैं डब्ल्यूसीएफ के माध्यम से .NET से एक एसएपी वेब सेवा का उपभोग करने की कोशिश कर रहा हूं। मैंने प्रॉक्सी उत्पन्न की है और मैंने app.config फ़ाइल को कॉन्फ़िगर किया है।डब्ल्यूसीएफ

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

ZTestRFC एसएपी विधि एक बहुत ही सरल कार्य है जो एक इनपुट स्ट्रिंग को स्वीकार करता है, और आउटपुट:

यहाँ अपने परीक्षण कोड है "Result: <the input string>"

जब मैं ZTestRFC विधि कॉल, मैं एक अशक्त हो गया परिवर्तनीय प्रतिक्रिया में मूल्य। लेकिन एसओएपी संदेश ठीक लगते हैं।

सोप अनुरोध

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

सोप प्रतिक्रिया

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

मैं नहीं जानता कि क्या हो रहा जा सकता है। कोई विचार?

अग्रिम

उत्तर

3

बेतकल्लुफ़ धन्यवाद, ऐसा लगता है कि जब आप प्रॉक्सी बनाया लग रहा है (BTW, क्या तकनीक आप ऐसा करने के लिए? का उपयोग किया था), एसएपी नेट से कहा कि पैरामीटर और प्रतिक्रिया कुछ नाम स्थान में होगा , लेकिन आप रिक्त नेमस्पेस ("") में पैरामीटर भेज रहे हैं। यही कारण है कि एसएपी सेवा "परिणाम:" लौट रही है। आपको एक शून्य प्रतिक्रिया मिल रही है क्योंकि आपकी प्रॉक्सी टेस्टऑटपुट तत्व को एक अलग नेमस्पेस में होने की उम्मीद कर सकती है।

जेनरेट प्रॉक्सी कक्षाओं को देखें और देखें कि किन नामों की अपेक्षा की जाती है।

+0

आपके उत्तर जॉन के लिए धन्यवाद। मैंने प्रॉक्सी क्लास उत्पन्न करने के लिए वीएस 2008 का उपयोग किया है। मैं बाहर प्रॉक्सी में परिभाषित नामस्थान देख लिया है, लेकिन इस समय मैं सफल नहीं हुए हैं: _ (मैं तुम्हें प्रतिक्रिया – Javier

+0

@Javier देंगे: आप का उपयोग किया था "वेब संदर्भ जोड़ें", "सेवा संदर्भ जोड़ें", या क्या ? –

+0

मैं wsdl यूआरएल के साथ जोड़ें सेवा referente इस्तेमाल किया धन्यवाद – Javier