2012-01-20 7 views
1
pXML= Product_Request 
set http= server.Createobject("MSXML2.ServerXMLHTTP") 
http.Open "GET", "http://test.com/Data_Check/Request.asp?XML_File=" & pXML , False 
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
http.send 

위의 URL에 위의 asp 코드와 함께 요청을 보내야합니다. 하지만 그 서버에서 응답 필요가 없습니다.응답을 기다리지 않고 XMLHTTP에서 요청을 보내는 방법은 무엇입니까?

요청을 보낸 후 응답을 기다립니다. 응답을 기다리는 동안 차단되지 않도록하려면 어떻게 작성해야합니까?

+0

BTW, "GET"요청과 함께 보내지는 Content-Type 헤더를 볼 때마다 나는 딱딱한 소리가납니다. 정의에 따르면 GET은 내용을 전달하지 않으므로 유형을 지정하는 작은 점이 있습니다. – AnthonyWJones

+0

내 첫 번째 생각 : 비동기 부분을 처리하는 com-visible .net 구성 요소. ASP 고전 내의 비동기는 Heisenbugs의 영역입니다. –

답변

0

귀하의 요청이 응답없이 성공한 것으로 판단하는 방법이 있다고 생각하지 않습니다. 그렇다면 무응답과 완전 실패의 차이는 무엇입니까?

+0

첫 번째 요청을 보내고 다음 요청으로 이동해야합니다. 응답 내 다른 서버에서 생성해야합니다. 저를위한 문제는 ... 첫 번째 요청은 재생을 위해 10 초가 걸리고 두 번째 응답은 재생을 위해 15 초가 걸립니다. 총 25 초. 나는 15 초 안에 이것을해야한다 ... – user475464

+0

요청 2는 요청 1이 먼저 완료되도록 요구 하는가? –

+0

두 요청의 응답에 대해 두 요청과 무게를 함께 보내야합니다. 왜냐하면 최소 시간 내에 응답을 완료해야하기 때문입니다. – user475464

1

대신 WinHTTPRequest 개체를 직접 사용할 수 있습니다 (이것이 ServerXMLHTTP의 기본 내용입니다). 그것에는 WaitForResponse 메소드가 유용 할 수있는 추가적인 메소드가 있습니다.

Set winHttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 
winHttpRequest.Open "GET", "http://localhost/mypage.aspx", true 

winHttpRequest.Send 

''# Do other request normally here 

winHttpRequest.WaitForResponse() 

참고 Openasync 방법은 파라미터 true있다. 이 경우 Send은 요청이 전송 되 자마자 응답이 수신되기 전에 즉시 반환됩니다. 이제 다른 일반적인 요청을 일반적인 동기식 방식으로 수행 할 수 있습니다. 완료되면 WaitForResponse으로 전화하여 원래 요청이 완료되었는지 확인할 수 있습니다.

주의 사항

  • 내가 직접 Open에 대한 호출 스크립트 환경 "비동기 호출을"하지 않는 것을 불평 수 있다는 가능성이 ASP에서 이것을에 해본 적이 없다.
  • 동시에 두 요청을 작성하는 것이 좋다고 가정합니다. 그들이 두 개의 다른 서버에 있다면 잘 될 것이고 여전히 괜찮은 것은 아니지만 다른 합병증이있을 수 있습니다.
  • ASP 페이지에 요청하면 각 요청은 해당 서버에 새로운 세션을 만듭니다.
  • 내 부분에 코드가 실행되는 것과 동일한 서버를 호출하지 않는다는 가정하에 스레드 풀의 데드락으로 이동할 수 있습니다.
0

열기 요청을 비동기 (예 : 세 번째 매개 변수는 참)로 변경하십시오. 이렇게하면 두 가지 요청을 동시에 제출할 수 있습니다. 그런 다음 두 응답이 모두 도착할 때까지 기다립니다.

pXML = Product_Request 
Set http = server.Createobject("MSXML2.ServerXMLHTTP") 
http.Open "GET", "http://test.com/Data_Check/Request.asp?XML_File=" & pXML , True 
http.Send 
Set http2 = server.Createobject("MSXML2.ServerXMLHTTP") 
http2.Open "GET", insert_code_for_your_second_url_here , True 
http2.Send 
http1.WaitForResponse 
http2.WaitForResponse 
관련 문제