Sys.Net.XmlHttpExecutor executeRequest 메서드

연결된 WebRequest 인스턴스에 지정되어 있는 웹 요청을 실행합니다.

MyExecutor.executeRequest;

예외 형식

조건

Sys.InvalidOperationException

요청이 시작된 후 executeRequest 메서드가 다시 호출된 경우

또는

실행자가 WebRequest 클래스의 인스턴스와 연결되어 있지 않은 경우

웹 요청을 실행하는 경우 executeRequest 메서드를 직접 호출하지 않습니다. 대신 WebRequest.invoke 메서드나 WebRequestManager.executeRequest 메서드를 호출해야 합니다. executeRequest 메서드는 사용자 지정 실행자와 함께 사용하거나 앞으로 있을 확장을 위한 것입니다.

참고참고

실행자의 executeRequest 메서드를 직접 호출하는 경우 WebRequestManager 인스턴스에서 웹 요청을 관리하지 않습니다. 따라서 WebRequestManager 클래스의 add_completedRequest 또는 add_invokingRequest 메서드를 호출하여 추가되는 모든 처리기가 호출되지 않습니다.

executeRequest 메서드를 호출하는 경우 실행자는 연결된 WebRequest 인스턴스에 지정된 HTTP 동사, HTTP 헤더 및 요청 본문을 사용하여 HTTP 요청을 생성하고 보냅니다. 실행자는 브라우저의 XMLHTTP 개체를 사용하여 HTTP 요청을 보냅니다. 자세한 내용은 About Native XMLHTTP를 참조하십시오.

연결된 요청 개체의 Content-Type 헤더가 설정되어 있지 않으면 실행자는 POST HTTP 요청에 대해 이 값을 application/x-www-form-urlencoded(기본값)로 설정합니다. 또한 브라우저에 요청 본문이 필요한 경우 설정되어 있지 않으면 자동으로 요청 본문을 빈 문자열("")로 설정합니다. 이렇게 하면 브라우저에서 Content-Length 헤더를 보냅니다. 실행자는 웹 요청의 완료 이벤트 처리기가 필요에 따라 호출되도록 합니다.

executeRequest가 호출된 후 실행자의 상태는 다음 중 하나입니다.

  • 시작. 실행자가 브라우저의 XMLHTTP 개체에 호출을 전송한 후에는 XmlHttpExecutor.started 속성이 true로 설정됩니다. 실행자는 활성화된 후 인스턴스의 수명 동안 그 상태로 유지됩니다.

  • 완료. XMLHTTP 호출이 성공적으로 수행되면 XmlHttpExecutor.startedXmlHttpExecutor.responseAvailable 속성이 true로 설정됩니다.

    브라우저의 XMLHTTP 개체에서 실행자의 내부 완료 처리기에 제어를 반환하는 경우 네트워크 요청이 완료된 것으로 간주됩니다. 그러나 상태 코드, 상태 텍스트 또는 응답 텍스트를 참조하면 요청이 실행되는 동안 오류가 발생했다는 내용이 있을 수 있습니다. 응답 정보를 검사하고 요청 결과로 반환되는 데이터가 유효한지 여부를 확인하는 것은 호출 코드의 역할입니다. 예를 들어 웹 서비스를 처리하는 요소는 응답 정보를 검사하고 서비스가 호출된 경우 오류가 발생했는지 여부를 확인해야 합니다.

  • 시간 초과. 연결된 요청의 제한 시간 값이 0이 아닌 경우 다른 완료 이벤트가 발생하지 않은 상태에서 제한 시간이 경과하면 실행자가 시간 초과된 것으로 상태가 설정됩니다. 이는 정해진 시간 내에 네트워크 호출이 완료되지 않았으며 실행자가 중단되지 않았음을 나타냅니다. 실행자 인스턴스의 startedtimedOut 속성은 true로 설정됩니다.

    참고참고

    요청의 제한 시간 값이 0으로 설정된 경우 XMLHTTP 요청 시간이 초과되면 실행자가 완료된 것으로 상태가 설정됩니다. 그런 다음 실행자는 요청 개체의 완료 이벤트를 발생시킵니다. 즉, 실행자 인스턴스의 startedresponseAvailable 속성에서 true를 반환합니다. 호출 코드는 실행자의 상태 코드를 검사하여 요청이 완료된 경우라도 유효한 데이터를 사용할 수 있는지 확인해야 합니다.

이벤트 처리기가 없는 경우 실행자는 완료 상태(완료 또는 시간 초과)가 되면 내부 정리를 수행하고 자동으로 반환됩니다.

참고참고

started 속성이 true로 설정된 후에는 executeRequest를 여러 번 호출할 수 없습니다. 그러나 executeRequest 메서드를 호출한 후 XMLHTTP 개체에서 예외를 throw할 경우에는 문제를 해결하고 executeRequest를 다시 호출할 수 있습니다.

다음 예제에서는 executeRequest 함수를 사용하여 웹 요청을 실행하는 방법을 보여 줍니다. 이 코드는 Sys.Net.XmlHttpExecutor 클래스 개요에서 볼 수 있는 전체 예제의 일부입니다.


// This function executes a Web request.
function ExecuteWebRequest()
{
    // Create the WebRequest object.
    wRequest =  new Sys.Net.WebRequest();

    // Set the request Url.  
    wRequest.set_url("getTarget.htm");


    // Set the Completed event handler, for processing return data
    wRequest.add_completed(OnCompleted);

      // Clear the results area.
    resultElementId.innerHTML = "";

    // To use executeRequest you must instantiate the
    // executor, assign it to the Web request instance,
    // then call the executeRequest function.
    // Note: Normally to make a Web request you use
    // the invoke method of the WebRequest instance.
    var executor = new Sys.Net.XMLHttpExecutor();
    wRequest.set_executor(executor); 
    executor.executeRequest();

    var started = executor.get_started();

    alert("Executor started: " + started);
}



// This function executes a Web request.
function ExecuteWebRequest()
{
    // Create the WebRequest object.
    wRequest =  new Sys.Net.WebRequest();

    // Set the request Url.  
    wRequest.set_url("getTarget.htm");


    // Set the Completed event handler, for processing return data
    wRequest.add_completed(OnCompleted);

      // Clear the results area.
    resultElementId.innerHTML = "";

    // To use executeRequest you must instantiate the
    // executor, assign it to the Web request instance,
    // then call the executeRequest function.
    // Note: Normally to make a Web request you use
    // the invoke method of the WebRequest instance.
    var executor = new Sys.Net.XMLHttpExecutor();
    wRequest.set_executor(executor); 
    executor.executeRequest();

    var started = executor.get_started();

    alert("Executor started: " + started);
}


표시: