2017-05-12 12 views
2

을 호출합니다. 비동기 XMLHTTP 호출을 시도하고 있습니다. 나는 다음과 같은 코드를 사용하고 :VBscript 비동기 XMLHttp 내가 작업하고있는 프로젝트에 대해

soapmessage = _ 
"<?xml version='1.0' encoding='utf-8'?>"& vbcrlf& vbcrlf & _ 
"<soap:Envelope"& vbcrlf & _ 
" xmlns:xsi="&chr(34)&"http://www.w3.org/2001/XMLSchema-instance"&chr(34)& 
vbcrlf & _ 
" xmlns:xsd="&chr(34)&"http://www.w3.org/2001/XMLSchema"&chr(34)& vbcrlf & _ 
" xmlns:soap="&chr(34)&"http://www.w3.org/2003/05/soap- 
envelope"&chr(34)&">"& vbcrlf & _ 
" <soap:Body>"& vbcrlf & _ 
"<notification>"& vbcrlf & _ 
" <action>Action</action>"& vbcrlf & _ 
" <objectid>333333</objectid>"& vbcrlf & _ 
"</notification>"& vbcrlf & _ 
" </soap:Body>" & vbcrlf & _ 
" </soap:Envelope>" 

strEndpoint = "**********" 

Set xmlhttp = CreateObject("MSXML2.SERVERXMLHTTP.6.0") 
xmlhttp.open "POST", strEndpoint, True 
xmlhttp.OnReadyStateChange = doHttpOnReadyStateChange() 
xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
xmlhttp.Send soapmessage 

Function doHttpOnReadyStateChange() 
    If xmlhttp.ReadyState = 4 Then 
     'do something 
    End If 
End Function 

나는 다음 내가 받기를 실행하려고 :

test.vbs(19, 1) Microsoft VBScript runtime error: Type mismatch: 'xmlhttp.OnReadyStateChange'

내가 잘못 일을 할 수 있는지 어떤 생각? 비동기 호출을 시도한 것은 처음이었습니다. OnReadyStateChange에 의아해했습니다.

답변

2

GetRef() 함수를 사용하여 얻을 수있는 함수 참조가 필요합니다.

xmlhttp.OnReadyStateChange = GetRef("doHttpOnReadyStateChange") 

Dirk.R : 수정 사항 인 동안 추가하고 싶습니다. 성명서의 순서도 중요합니다!

+0

GetRef ("") arround로 functionname을 사용해 보았습니다. 더 이상의 오류는 없지만 아무 일도 일어나지 않습니다. 일부 디버그 코드를 msgbox 또는 기타에 넣으십시오. 그러나 함수를 입력하는 것처럼 보이지는 않습니다 ("if"외부에서도). –

+0

@DirkR. 이상한, 당신이'Function' 대신에'Sub' 프로 시저를 시도해 보았습니다. 당신이 아무것도 반환하지 않는 것처럼 보일 수도 있습니다. 'OnReadyStateChange' 이벤트가 발생하지 않는 것과 거의 같습니다. – Lankymart

+0

Sub로 시도했지만 같은 결과입니다. 불이 나오지 않는 것처럼 보입니다. 서버 하나 대신 일반 MSXML2.XMLHTTP.6.0 개체를 사용하여 시도했지만 아무것도. 정말 여기에 난처한! –