2011-07-21 18 views
6

का उपयोग कर क्लासिक एएसपी से नेट नेट सेवा विधि को कॉल करने के लिए कैसे मैं एसओएपी का उपयोग कर क्लासिक एएसपी से नेट नेट सेवा को कॉल करने का प्रयास कर रहा हूं। मैंने निम्न कोड को एक परीक्षण के रूप में बनाया है और 400 खराब अनुरोध त्रुटि के साथ एक खाली reponsebody वापस प्राप्त करना जारी रखें। क्या मैं कुछ गलत कर रहा हूं या शायद यह मुद्दा नेट पर हो सकता है?एसओएपी

'set up xmlhttp to checkout server 
Dim oRequest 
Set oRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") 

'setting this option will allow ServerXMLHTTP to ignore the certificate errors it encounters. 
oRequest.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS 


' resolve, connect, send, receive - in milliseconds 
oRequest.setTimeouts 10000, 10000, 10000, 10000 

'set the URL 
msURL = "[redacted]" 

msSOAP = "<?xml version=""1.0"" encoding=""utf-8"" ?>" 
msSOAP = msSOAP & "<soap12:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap12=""http://www.w3.org/2003/05/soap-envelope"">" 
msSOAP = msSOAP & "<SOAP:Body>" 
msSOAP = msSOAP & "<[Some Service] xmlns=""http://localhost"">" 
msSOAP = msSOAP & "<MethodName>" 
msSOAP = msSOAP & "<methodParam1>[some value]</methodParam1>" 
msSOAP = msSOAP & "<methodParam2>[some value]</methodParam2>" 
msSOAP = msSOAP & "<methodParam3>[some value]</methodParam3>" 
msSOAP = msSOAP & "</MethodName>" 
msSOAP = msSOAP & "</[Some Service]>" 
msSOAP = msSOAP & "</SOAP:Body>" 
msSOAP = msSOAP & "</soap12:Envelope>" 

oRequest.Open "POST", msURL, False 
oRequest.setRequestHeader "Content-Type", "text/xml" 
oRequest.setRequestHeader "SOAPMethodName", "[MethodName]" 
oRequest.setRequestHeader "SOAPAction", "[Some Url]" 
oRequest.send msSOAP 

Response.Write oRequest.ResponseBody 
+0

ओह। मैं साबुन 12 टैग के साथ खराब स्वरूपित एक्सएमएल देखता हूं जो एसओएपी एंड टैग से मेल नहीं खाता है। लेकिन, इससे कोई फर्क नहीं पड़ता। यह मेरे कोड के वास्तविक संस्करण में कोई अच्छा नतीजा नहीं है। – crackedcornjimmy

+0

किस प्रकार (और प्रारूप) '' है और क्या यह आपको 'अब() 'से मिलता है? – Filburt

उत्तर

2

निम्नलिखित समाधान मेरी समस्या का उत्तर था। और Filburt, एक बार जब मैं वास्तव में एक अच्छा SOAP कॉल किया, मैंने पाया कि आप सवाल बहुत वैध थे। प्रकार और प्रारूप काफी mattered!

'set up xmlhttp to checkout server 
Dim oRequest 
Set oRequest = Server.CreateObject("MSXML2.ServerXMLHTTP") 

'setting this option will allow ServerXMLHTTP to ignore the certificate errors it encounters. 
oRequest.setOption(2) = SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS 

' resolve, connect, send, receive - in milliseconds 
oRequest.setTimeouts 10000, 10000, 10000, 10000 

'set the URL 
msURL = "[Service Url]" 

msSOAP = "<?xml version=""1.0"" encoding=""utf-8"" ?>" 
msSOAP = msSOAP & "<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"">" 
msSOAP = msSOAP & "<s:Body>" 
msSOAP = msSOAP & "<[MethodName] xmlns=""[Some Namespace]"">" 
msSOAP = msSOAP & "<methodParam1>[Some value]</methodParam1>" 
msSOAP = msSOAP & "<methodParam2>[Some value]</methodParam2>" 
msSOAP = msSOAP & "<methodParam3>[Some value]</methodParam3>" 
    msSOAP = msSOAP & "</MethodName>" 
msSOAP = msSOAP & "</s:Body>" 
msSOAP = msSOAP & "</s:Envelope>" 

oRequest.Open "POST", msURL, False 
oRequest.setRequestHeader "Content-Type", "text/xml" 
oRequest.setRequestHeader "SOAPAction", "[Some Url]" 
oRequest.send msSOAP 

मैं यूआरएल के बंद "? Wsdl" ले लिया और लिफाफा थोड़ा बदल गया है और अब यह काम करता है। मैंने SoapMethodName शीर्षलेख की सेटिंग भी हटा दी।

+0

'wsdl' को हटा रहा है और क्या 'localhost' वास्तव में आपका स्कीमा नेमस्पेस मेरा अगला प्रश्न होगा ;-) – Filburt

संबंधित मुद्दे