Получите простой ответ от службы SOAP с классическим ASP - PullRequest
1 голос
/ 11 октября 2010

Мне было поручено получить ответ от SOAP-запроса, используя классический asp. Запрос примерно такой же простой, как и получается - мне просто нужно запустить 3 параметра в URL веб-службы и выписать ответ (в простом текстовом формате). Я проверил сервис, используя несколько утилит для тестирования SOAP, и он выдает хороший ответ.

Я также прочитал около 10 различных руководств по использованию SOAP-каналов в классическом ASP, но ни один из них, похоже, не работает вообще.

Последний, который я пробовал, дал мне следующий код:

<%
Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP")
oXmlHTTP.Open "POST", "http://www.webservicehost.co.uk/B2bservice.asmx?wsdl", False 

oXmlHTTP.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8" 
oXmlHTTP.setRequestHeader "SOAPAction", "http://ourNameSpace/ourFunction"

SOAPRequest = _
  "<?xml version=""1.0"" encoding=""utf-8""?>" &_
  "<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"">" &_
    "<soap12:Body>" &_
      "<ourFunction xmlns=""http://ourNameSpace/"">" &_
        "<Ccode>OurCode</Ccode>" &_
        "<Pword>1d2s45a</Pword>" &_
        "<OrderNo>9876</OrderNo>" &_
      "</ourFunction>" &_
    "</soap12:Body>" &_
  "</soap12:Envelope>"
oXmlHTTP.send SOAPRequest

response.write oXmlHTTP.responseText
%>

У меня есть все правильные значения для POST URL, переменных Ccode, Pword и OrderNo, но я не знаю, что использовать для «SoapAction» или значений. В результате, когда я запускаю страницу, я просто получаю сообщение об ошибке:

soap: SenderUnable для обработки запроса без действительного параметра действия. Пожалуйста, предоставьте действительное действие мыла.

Может кто-нибудь предложить, что использовать для значений SoapAction и ourFunction xmlns?

Большое спасибо за любые указатели ...

1 Ответ

10 голосов
/ 11 октября 2010

ваш код должен работать нормально с несколькими изменениями

<%
    Response.Write "<br>START<hr>"

    Set oXmlHTTP = CreateObject("Microsoft.XMLHTTP")
    oXmlHTTP.Open "POST", "http://www.crusaderb2b.co.uk/b2bservice.asmx", False 

    oXmlHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
    oXmlHTTP.setRequestHeader "SOAPAction", "http://crusaderb2b.co.uk/TrackingId"

    SOAPRequest = _
      "<?xml version=""1.0"" encoding=""utf-8""?>" &_
      "<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"">" &_
        "<soap12:Body>" &_
          "<ourFunction xmlns=""http://ourNameSpace/"">" &_
            "<Ccode>OurCode</Ccode>" &_
            "<Pword>1d2s45a</Pword>" &_
            "<OrderNo>9876</OrderNo>" &_
          "</ourFunction>" &_
        "</soap12:Body>" &_
      "</soap12:Envelope>"

    oXmlHTTP.send SOAPRequest    
    Response.Write oXmlHTTP.responseText

    Response.Write "<br>END<hr>"
%>

изменения

  • удалить ?wdsl
  • изменить тип содержимого
  • вызов метода должен быть тем же сервером веб-службы, что и имя метода

добавлено

Я изменил код, как вы указали для веб-службы.Все, что вам нужно, на странице обслуживания:

alt text

оригинальное изображение здесь

ответ с кодом выше:

alt text

...