SetTimeouts Method

 

Description

 

Specifies the individual time-out components of a send/receive operation, in milliseconds.

 

C/C++ Syntax

 

HRESULT SetTimeouts(

long ResolveTimeout,

long ConnectTimeout,

long SendTimeout,

long ReceiveTimeout

);

 

PowerBASIC Syntax

 

METHOD SetTimeouts ( _

BYVAL ResolveTimeout AS LONG, _

BYVAL ConnectTimeout AS LONG, _

BYVAL SendTimeout AS LONG, _

BYVAL ReceiveTimeout AS LONG _

)

 

Parameter

 

ResolveTimeout

 

in] Value of type Long integer. Time-out value applied when resolving a host name (such as www.microsoft.com) to an IP address (such as 192.168.131.199), in milliseconds. The default value is zero, meaning no time-out (infinite). If DNS timeout is specified using NAME_RESOLUTION_TIMEOUT, there is an overhead of one thread per request.

 

ConnectTimeout

 

[in] Value of type Long integer. Time-out value applied when establishing a communication socket with the target server, in milliseconds. The default value is 60,000 (60 seconds).

 

SendTimeout

 

[in] Value of type Long integer. Time-out value applied when sending an individual packet of request data on the communication socket to the target server, in milliseconds. A large request sent to an HTTP server are normally be broken up into multiple packets; the send time-out applies to sending each packet individually. The default value is 30,000 (30 seconds).

 

ReceiveTimeout

 

[in] Value of type Long integer. Time-out value applied when receiving a packet of response data from the target server, in milliseconds. Large responses are be broken up into multiple packets; the receive time-out applies to fetching each packet of data off the socket. The default value is 30,000 (30 seconds).

 

Return Value

 

This method does not return a value.

 

OBJRESULT

 

Returns S_OK if successful or an error value otherwise.

 

Remarks

 

All parameters are required. A value of 0 or -1 sets a time-out to wait infinitely. A value greater than 0 sets the time-out value in milliseconds. For example, 30,000 would set the time-out to 30 seconds. All negative values other than -1 cause this method to fail.

 

Time-out values are applied at the Winsock layer.

 
Example Code [PowerBASIC]

 

The following example shows how to set all WinHTTP time-outs to 30 seconds, open an HTTP connection, send an HTTP request, and read the response text.

 

#INCLUDE ONCE "win32api.inc"
#INCLUDE ONCE "httprequest.inc"
 

DIM pHttpReq AS IWinHttpRequest

DIM bstrResponseHeaders AS STRING

 

' Create an instance of the HTTP service

pHttpReq = NEWCOM "WinHttp.WinHttpRequest.5.1"

 

' Set time-outs. If time-outs are set, they must be set before open.

pHttpReq.SetTimeouts 30000, 30000, 30000, 30000

 

' Open an HTTP connection

pHttpReq.Open UCODE$("GET"), UCODE$("http://microsoft.com"), %FALSE

 

' Send the HTTP Request

pHttpReq.Send

 

' Get all response headers

bstrResponseHeaders = pHttpReq.GetAllResponseHeaders

MSGBOX ACODE$(bstrResponseHeaders)

 

Example Code [C++]

 

#include "stdafx.h"

#include "objbase.h"

 

#include "httprequest.h"

 

// IID for IWinHttpRequest.

const IID IID_IWinHttpRequest =

{

0x06f29373,

0x5c5a,

0x4b54,

{0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e}

};

 

int main(int argc, char* argv[])

{

   // variable for return value

   HRESULT    hr;

 

   // initialize COM

   hr = CoInitialize( NULL );

 

   IWinHttpRequest *  pIWinHttpRequest = NULL;

 

   BSTR            bstrResponse = NULL;

   VARIANT         varFalse;

   VARIANT         varEmpty;

 

   CLSID           clsid;

 

   VariantInit(&varFalse);

   V_VT(&varFalse)   = VT_BOOL;

   V_BOOL(&varFalse) = VARIANT_FALSE;

 

   VariantInit(&varEmpty);

   V_VT(&varEmpty) = VT_ERROR;

 

   hr = CLSIDFromProgID(L"WinHttp.WinHttpRequest.5.1", &clsid);

 

   if (SUCCEEDED(hr))

   {

       hr = CoCreateInstance(clsid, NULL,

                             CLSCTX_INPROC_SERVER,

                             IID_IWinHttpRequest,

                             (void **)&pIWinHttpRequest);

   }

       

   if (SUCCEEDED(hr))

   {        // Set Time-outs.

       hr = pIWinHttpRequest->SetTimeouts(30000, 30000,

                                          30000, 30000);

   }

   if (SUCCEEDED(hr))

   {        // Open WinHttpRequest.

           BSTR bstrMethod  = SysAllocString(L"GET");

               BSTR bstrUrl = SysAllocString(L"http://microsoft.com");

       hr = pIWinHttpRequest->Open(bstrMethod,

                                   bstrUrl,

                                   varFalse);

               SysFreeString(bstrMethod);

               SysFreeString(bstrUrl);

   }

   if (SUCCEEDED(hr))

   {        // Send Request.

       hr = pIWinHttpRequest->Send(varEmpty);

   }

   if (SUCCEEDED(hr))

   {        // Get Response text.

               hr = pIWinHttpRequest->GetAllResponseHeaders(&bstrResponse);

   }

   if (SUCCEEDED(hr))

   {        // Print response to console.

               wprintf(L"%.256s",bstrResponse);

   }

 

       // Release memory.

   if (pIWinHttpRequest)

       pIWinHttpRequest->Release();

   if (bstrResponse)

       SysFreeString(bstrResponse);

       

       CoUninitialize();

       return 0;

}

 

Example Code [Script]

 

// Instantiate a WinHttpRequest object.

var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1");

 

// Set time-outs. If time-outs are set, they must

// be set before open.

WinHttpReq.SetTimeouts(30000, 30000, 30000, 30000);

 

// Initialize an HTTP request. 

WinHttpReq.Open("GET", "http://www.microsoft.com", false);

 

// Send the HTTP request.

WinHttpReq.Send();

 

Example Code [Visual Basic]

 

Option Explicit

 

Private Sub Command1_Click()

   Dim HttpReq As Object

 

   ' Create the WinHTTPRequest ActiveX Object.

   Set HttpReq = New WinHttpRequest

 

   ' Switch the mouse pointer to an hourglass while busy.

   MousePointer = vbHourglass

 

   ' Set time-outs. If time-outs are set, they must be

   ' set before open.

   HttpReq.SetTimeouts 30000, 30000, 30000, 30000

 

   ' Open an HTTP connection.

   HttpReq.Open "GET", "http://microsoft.com", False

 

   ' Send the HTTP Request.

   HttpReq.Send

 

   ' Get all response headers.

   Text1.Text = HttpReq.GetAllResponseHeaders()

 

   ' Switch the mouse pointer back to default.

   MousePointer = vbDefault

 

End Sub

 

Valid XHTML 1.0 Transitional