2011-07-21 13 views
6

SOAP kullanarak Klasik ASP'den bir .NET Web Hizmeti'ni çağırmaya çalışıyorum. Aşağıdaki kodu bir test olarak oluşturdum ve 400 Hatalı İstek hatasıyla boş bir yanıt alıyorum. Yanlış bir şey yapıyorum veya bu sorun .Net tarafında olabilir mi?Klasik ASP'den .NET Web Hizmeti Yöntemi Nasıl Kullanılır SOAP Kullanılıyor

'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

Hata. Kötü biçimlendirilmiş XML'i SOAP bitiş etiketiyle eşleşmeyen soap12 etiketi ile görüyorum. Ama bu önemli değil. İyi bir sonuç vermeden kodumun gerçek sürümünde doğru. – crackedcornjimmy

+0

Ne tür (ve biçim) '' ve 'Now()' dan aldığınızla eşleşiyor mu? – Filburt

cevap

2

Aşağıdaki çözüm benim sorunumun yanıtıydı. Ve Filburt, bir kez daha iyi bir SOAP çağrısı yaptıktan sonra, sorgunun çok meşru olduğunu keşfettim. Tip ve format büyük önem taşıyor!

'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 

Ben url kapalı "? Wsdl" aldı ve zarfı biraz değişti ve şimdi çalışıyor. SoapMethodName üstbilgisinin ayarını da kaldırdım.

+0

'wsdl'yi kaldırma ve' localhost' gerçekten şema ad alanınız olup olmadığını bir sonraki sorularım olurdu ;-) – Filburt