2010-02-15 2 views
0
var oXMLDoc, oXMLHttp, soapRequest, soapResponse; 

oXMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); 

oXMLHttp.open("POST", "http://nerdbox/HelloService.svc", false); 

// Add HTTP headers 
oXMLHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); 
oXMLHttp.setRequestHeader("SOAPAction", "http://tempuri.org/IHelloService/SayHello"); 

// Form the message 
soapRequest = '<?xml version="1.0" encoding="utf-16"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><SayHello xmlns="http://tempuri.org/"><name>Zuhaib</name></SayHello></soap:Body></soap:Envelope>'; 

WScript.Echo("Request : " + soapRequest); 

oXMLHttp.send(soapRequest); 
soapResponse = oXMLHttp.responseXML.xml; 
WScript.Echo("Respose : " + soapResponse); 

Что не так с этим JScript? почему я получаю 400 Bad Request. Я читал аналогичные потоки в stackoverflow. Некоторые говорят о проблеме форматирования сообщения с мылом.400 Плохой запрос: использование WCF basicHttpBinding (Soap) с использованием JScript/VBScript

Это сообщение похоже, если я возьму его у скрипача.

ответ

1

Попробуйте изменить свое действие от IHelloService до HelloService.

И позвольте мне спросить вас, почему вы делаете это с трудом. Просто добавьте webHttpBinding и используйте JSON.

См. Очень простой пример here.

+0

Фактическое обслуживание, не написанное мной. Я просто пытаюсь подключиться. Сценарий должен использоваться из vbscript или jscript. Json - только jscript. – Zuhaib

+0

ОК, не используйте json .. попробуйте сначала отправить запрос или форму. возможно, эти протоколы включены. munging soap packets является болезненным и может быть ненужным .... см. ранние разделы в связанной статье, он охватывает этот сценарий. –

+0

неважно, у меня есть мозговой пердит. вы проводите опрос службы WCF. извините ... –

0

Мне пришлось изменить код на следующее, чтобы запустить его в VBSEdit ... тогда я (очевидно) получил ошибку, поскольку не смог найти ресурс ... но изменил код на это и посмотрите, не изменилось ли это?

Dim oXMLDoc, oXMLHttp, soapRequest, soapResponse 

Set oXMLHttp = CreateObject("Microsoft.XMLHTTP") 

oXMLHttp.open "POST", "http://nerdbox/HelloService.svc", False 

'// Add HTTP headers 
oXMLHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
oXMLHttp.setRequestHeader "SOAPAction", "http://tempuri.org/IHelloService/SayHello" 

'// Form the message 
soapRequest = "<?xml version=""1.0"" encoding=""utf-16""?><soap:Envelope xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema""><soap:Body><SayHello xmlns=""http://tempuri.org/""><name>Zuhaib</name></SayHello></soap:Body></soap:Envelope>" 

WScript.Echo "Request : " + soapRequest 

oXMLHttp.send soapRequest 
soapResponse = oXMLHttp.responseXML.xml 
WScript.Echo "Respose : " + soapResponse 
+0

Пожалуйста, переформатируйте свой код, чтобы XML не был на одной строке. –

+0

@JohnSaunders: Эй, я просто скопировал код из исходного сообщения и переписал с изменениями, которые мне пришлось внести, чтобы заставить его скомпилировать и запустить в VBSEdit ... XML-in-one-line появилась из исходного сообщения и Меня не интересовало это, чтобы заставить код работать. –

+0

Теперь моя проблема заключается не в том, работает ли программа, а в том, могут ли ее другие пользователи SO читать ее. –