2011-03-05 7 views
0

http://www.lasertools.co.uk/webservice/getCatalogue.asmx에 웹 서비스가 있는데 SOAP 1.1 및 SOAP 1.2 요청을 받아들이는 데 사용해야하지만 고전적인 ASP에서는 이러한 경험이 없습니다. 나는 그것에 관하여 몇몇 기사를 읽고 그 기사에서 언급 된 방법의 어떤을 시도했다 그러나 나는 다만 작동하기 위하여 그것을 보일 수 없다. 지금까지 내가 관리해 온 최고는 404 페이지를 찾을 수 없다는 서버의 응답입니다. 다음은 현재 시도중인 ASP 페이지입니다.클래식 ASP의 SOAP 문제

<%@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

404 응답이 필요합니다. 당신은 바로 URL에 게시하지 않을 :

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

그냥 http://www.lasertools.co.uk/webservice/getCatalogue.asmx?op=getProductCategories의 예를 확인하십시오.

물론 XML을 보낼 때 더 많은 문제가있을 수 있지만 mark it as code을 제외하고는이 사이트는 대괄호로 묶인 것을 제거합니다.

+0

와우, 나는 그게 그렇게 간단하지 않다고 믿을 수 없다 - 나는 수십 개의 코드 조합을 시도했다! 감사합니다 – Mike

+0

아무 문제 마이크. 이 대답을 받아 들일 수 있습니까? (이 답변의 왼쪽에있는 확인란을 클릭하십시오.) – Martijn