2015-11-10 2 views
0

Неслучайно это так, пожалуйста, несите меня.ASP Classic, SOAP/XML Запрос и ответ

я получил это как запрос

POST /weblordinterface/interface.asmx HTTP/1.1 
Host: weblord-test.toshiba-tro.de 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

<?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> 
    <_getCaseById xmlns="http://weblord.toshiba-tro.de/"> 
     <sIdCase>string</sIdCase> 
     <sUser>string</sUser> 
     <sPassword>string</sPassword> 
    </_getCaseById> 
    </soap12:Body> 
</soap12:Envelope> 

от поставщика servicve и это как ответ

HTTP/1.1 200 OK 
Content-Type: application/soap+xml; charset=utf-8 
Content-Length: length 

<?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> 
    <_getCaseByIdResponse xmlns="http://weblord.toshiba-tro.de/"> 
     <_getCaseByIdResult>xml</_getCaseByIdResult> 
    </_getCaseByIdResponse> 
    </soap12:Body> 
</soap12:Envelope> 

я написал страницу ASP, который имеет IDcase/пользователь/пароль, пересылаемый для меня, и я знаю, что эта часть работает, так как я могу отображать все 3 экранных экрана.

мой код: -

<% 

dim sUser 
dim sPassword 
dim sIdCase 

sIdCase=Request.QueryString("sIdCase") 
sPassword=Request.QueryString("sPassword") 
sUser=Request.QueryString("sUser") 

Dim objXMLHTTP 
set objXMLHTTP = server.Createobject("MSXML2.ServerXMLHTTP.3.0") 

Dim strRequest, strResult, 


strRequest ="<?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><_getCaseById xmlns='http://weblord.toshiba-tro.de/'><sIdCase>" & sIdCase & "</sIdCase>" _ 
& "   <sUser>" & sUser & "</sUser> <sPassword>" & sPassword & "</sPassword></_getCaseById></soap12:Body></soap12:Envelope>" 
objXMLHTTP.open "POST", "http://weblord.toshiba-tro.de/weblordinterface/interface.asmx" , true 
objXMLHTTP.setRequestHeader "User-Agent","HTTP/1.1" 
objXMLHTTP.setRequestHeader "Host","weblord-test.toshiba-tro.de" 
objXMLHTTP.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8" 
objXMLHTTP.setRequestHeader "Content-Length", Len(strRequest) 
'objXMLHTTP.setRequestHeader "SOAPAction", "http://weblord.toshiba-tro.de/" 

objXMLHTTP.send(strRequest) 


If objXMLHTTP.status = 200 Then 
    TextResponse = objXMLHTTP.responseText 
    XMLResponse = objXMLHTTP.responseXML 
    StreamResponse = objXMLHTTP.responseStream 
Else 
    response.write("we have an error") 
End If 

Set objXMLHTTP = Nothing 


%> 

Может кто-то пожалуйста просветить меня о том, как я могу получить ответ и отобразить его, я, кажется, чтобы получить ошибку в

If objXMLHTTP.status = 200 Then 

линии

msxml3.dll ошибка '8000000a'

Данные, необходимые для завершения этой операции, пока недоступны.

Может один из вас экспертов, пожалуйста, помогите

ответ

1

Вы задаете асинхронный запрос при открытии соединения. Таким образом, данные еще не доступны в следующем коде. Вместо этого измените это на синхронный запрос.

ie. изменения от этого ...

objXMLHTTP.open "POST", "http://weblord.toshiba-tro.de/weblordinterface/interface.asmx" , true 

... к этому ...

objXMLHTTP.open "POST", "http://weblord.toshiba-tro.de/weblordinterface/interface.asmx" , false 
+0

Спасибо, Джон, я попробовал как Async, так и snyc, с syn статус показывает как 403. – AndyG

+1

Это должно быть синхронно. 403 неавторизован, указывая, что либо учетные данные, с которыми вы подключаетесь, являются недопустимыми, либо компьютер, к которому вы обращаетесь, должен быть включен в белый список. – johna