Проблема SOAP в Классическом ASP - PullRequest
0 голосов
/ 05 марта 2011

Есть веб-сервис на http://www.lasertools.co.uk/webservice/getCatalogue.asmx, который мне нужно использовать, который принимает запросы SOAP 1.1 и SOAP 1.2, но у меня нет опыта работы с классическим ASP; Я прочитал несколько статей об этом и попробовал некоторые методы, упомянутые в этих статьях, но я просто не могу заставить его работать. Лучшее, что мне удалось сделать, - это ответ сервера, в котором говорится, что страница 404 не найдена. Вот страница ASP, которую я сейчас пытаюсь найти:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<%

    Dim objXML
    Dim postUrl
    Dim DataToSend
    Dim DataParms
    Dim DataReceived
    Dim Status

    DataToSend = ""
    DataParms = ""
    postUrl = "http://www.lasertools.co.uk/webservice/GetProductCategories"

    Set objXML = CreateObject("MSXML2.ServerXMLHTTP")

    objXML.Open "POST", postUrl, False 
    objXML.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
objXML.setRequestHeader "SOAPAction", "http://www.lasertools.co.uk/webservice/GetProductCategories" 
    objXML.setRequestHeader "MessageType", "CALL"
    SOAPRequest = "<?xml version='1.0' encoding='utf-8'?> "
    SOAPRequest = SOAPRequest & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"""
    SOAPRequest = SOAPRequest & " xmlns:xsd=""http://www.w3.org/2001/XMLSchema"""
    SOAPRequest = SOAPRequest & " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">"
    SOAPRequest = SOAPRequest & " <soap:Body>"
    SOAPRequest = SOAPRequest & " <getProductCategories xmlns=""http://www.lasertools.co.uk/webservice"" />"
    SOAPRequest = SOAPRequest & " </soap:Body>"
    SOAPRequest = SOAPRequest & " </soap:Envelope>"

    objXML.send SOAPRequest 
    DataReceived = objXML.responseText

    Dim oXml
    Set oXml = CreateObject("Msxml2.DOMDocument")

    oXml.LoadXml (DataReceived)
    oXML.async = False

    Set objLst = oXml.getElementsByTagName("*")
    if objLst.Length = 0 then
%>
        <br />NO CHOICES<br />
<%
        response.write DataReceived & "<br />"
    else
        AvailableChoices = 0
    For Each xmlItem In objLst
        For Each xmlItem2 In xmlItem.childNodes
            if xmlItem.childNodes(0).NodeName = "#text" then
           AvailableChoices = AvailableChoices + 1
           DisplayVal = xmlItem.childNodes(0).text
%>
        <%=DisplayVal%><br />
<%
        end if
        Next
    Next
    end if
%>

<body>
</body>
</html>

1 Ответ

1 голос
/ 05 марта 2011

Ответ 404 следует ожидать;вы не пишете на правильный URL-адрес:

postUrl = "http://www.lasertools.co.uk/webservice/getCatalogue.asmx"

Просто посмотрите пример на http://www.lasertools.co.uk/webservice/getCatalogue.asmx?op=getProductCategories.

Конечно, могут быть другие проблемы с отправляемым XMLно этот сайт удаляет что-либо в скобках, если вы не отметите его как код .

...