HttpWebRequest.KeepAlive プロパティ
インターネット リソースへの永続的な接続を行うかどうかを示す値を取得または設定します。
Public Property KeepAlive As Boolean
[C#]
public bool KeepAlive {get; set;}
[C++]
public: __property bool get_KeepAlive();public: __property void set_KeepAlive(bool);
[JScript]
public function get KeepAlive() : Boolean;public function set KeepAlive(Boolean);
プロパティ値
インターネット リソースへの要求に、値 Keep-alive を持つ Connection HTTP ヘッダーを格納する場合は true 。それ以外の場合は false 。既定値は true です。
解説
値 Keep-alive を持つ Connection HTTP ヘッダーを送信するには、このプロパティを true に設定します。アプリケーションは KeepAlive を使用して、永続的な接続への設定を示します。 KeepAlive プロパティが true の場合、アプリケーションは対応しているサーバーに対して永続的な接続を行います。
メモ HTTP/1.1 を使用する場合、Keep-alive は既定でオンになっています。 KeepAlive を false に設定すると、 Connection: Close ヘッダーがサーバーに送信されることがあります。
使用例
[Visual Basic, C#, C++] KeepAlive プロパティを false に設定して、インターネット リソースとの永続的な接続が確立されないようにする例を次に示します。
Class HttpWebRequest_Connection
Shared Sub Main()
Try
' Create a new 'HttpWebRequest' object for the specified Uri. Make sure that
' a default proxy is set if you are behind a fure wall.
Dim myHttpWebRequest1 As HttpWebRequest = CType(WebRequest.Create("https://www.contoso.com"), HttpWebRequest)
myHttpWebRequest1.KeepAlive = False
' Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
Dim myHttpWebResponse1 As HttpWebResponse = CType(myHttpWebRequest1.GetResponse(), HttpWebResponse)
Console.WriteLine(ControlChars.Cr + "The HTTP request Headers for the first request are {0}", myHttpWebRequest1.Headers)
Console.WriteLine("Press Enter Key to Continue..........")
Console.Read()
Dim streamResponse As Stream = myHttpWebResponse1.GetResponseStream()
Dim streamRead As New StreamReader(streamResponse)
Dim readBuff(256) As [Char]
Dim count As Integer = streamRead.Read(readBuff, 0, 256)
Console.WriteLine("The contents of the Html page are......." + ControlChars.Cr)
While count > 0
Dim outputData As New [String](readBuff, 0, count)
Console.Write(outputData)
count = streamRead.Read(readBuff, 0, 256)
End While
' Close the Stream object.
streamResponse.Close()
streamRead.Close()
' Release the resources held by response object.
myHttpWebResponse1.Close()
Console.WriteLine()
' Create a new 'HttpWebRequest' object to the specified Uri.
Dim myHttpWebRequest2 As HttpWebRequest = CType(WebRequest.Create("https://www.contoso.com"), HttpWebRequest)
myHttpWebRequest2.Connection = "Close"
' Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
Dim myHttpWebResponse2 As HttpWebResponse = CType(myHttpWebRequest2.GetResponse(), HttpWebResponse)
' Release the resources held by response object.
myHttpWebResponse2.Close()
Console.WriteLine(ControlChars.Cr + "The Http RequestHeaders are " + ControlChars.Cr + "{0}", myHttpWebRequest2.Headers)
Console.WriteLine(ControlChars.Cr + "Press 'Enter' Key to Continue.........")
Console.Read()
Catch e As ArgumentException
Console.WriteLine(ControlChars.Cr + "The second HttpWebRequest object has raised an Argument Exception as 'Connection' Property is set to 'Close'")
Console.WriteLine(ControlChars.Cr + "{0}", e.Message)
Catch e As WebException
Console.WriteLine("WebException raised!")
Console.WriteLine(ControlChars.Cr + "{0}", e.Message)
Console.WriteLine(ControlChars.Cr + "{0}", e.Status)
Catch e As Exception
Console.WriteLine("Exception raised!")
Console.WriteLine("Source :{0} ", e.Source)
Console.WriteLine("Message : {0}", e.Message)
End Try
End Sub ' Main
End Class ' HttpWebRequest_Connection
[C#]
using System;
using System.IO;
using System.Net;
using System.Text;
class HttpWebRequest_Connection
{
static void Main()
{
try
{
// Create a new HttpWebRequest object.Make sure that
// a default proxy is set if you are behind a fure wall.
HttpWebRequest myHttpWebRequest1 =
(HttpWebRequest)WebRequest.Create("https://www.contoso.com");
myHttpWebRequest1.KeepAlive=false;
// Assign the response object of HttpWebRequest to a HttpWebResponse variable.
HttpWebResponse myHttpWebResponse1 =
(HttpWebResponse)myHttpWebRequest1.GetResponse();
Console.WriteLine("\nThe HTTP request Headers for the first request are: \n{0}",myHttpWebRequest1.Headers);
Console.WriteLine("Press Enter Key to Continue..........");
Console.Read();
Stream streamResponse=myHttpWebResponse1.GetResponseStream();
StreamReader streamRead = new StreamReader( streamResponse );
Char[] readBuff = new Char[256];
int count = streamRead.Read( readBuff, 0, 256 );
Console.WriteLine("The contents of the Html page are.......\n");
while (count > 0)
{
String outputData = new String(readBuff, 0, count);
Console.Write(outputData);
count = streamRead.Read(readBuff, 0, 256);
}
Console.WriteLine();
// Close the Stream object.
streamResponse.Close();
streamRead.Close();
// Release the resources held by response object.
myHttpWebResponse1.Close();
// Create a new HttpWebRequest object for the specified Uri.
HttpWebRequest myHttpWebRequest2 =
(HttpWebRequest)WebRequest.Create("https://www.contoso.com");
myHttpWebRequest2.Connection="Close";
// Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
HttpWebResponse myHttpWebResponse2 =
(HttpWebResponse)myHttpWebRequest2.GetResponse();
// Release the resources held by response object.
myHttpWebResponse2.Close();
Console.WriteLine("\nThe Http RequestHeaders are \n{0}",myHttpWebRequest2.Headers);
Console.WriteLine("\nPress 'Enter' Key to Continue.........");
Console.Read();
}
catch(ArgumentException e)
{
Console.WriteLine("\nThe second HttpWebRequest object has raised an Argument Exception as 'Connection' Property is set to 'Close'");
Console.WriteLine("\n{0}",e.Message);
}
catch(WebException e)
{
Console.WriteLine("WebException raised!");
Console.WriteLine("\n{0}",e.Message);
Console.WriteLine("\n{0}",e.Status);
}
catch(Exception e)
{
Console.WriteLine("Exception raised!");
Console.WriteLine("Source :{0} " , e.Source);
Console.WriteLine("Message :{0} " , e.Message);
}
}
}
[C++]
int main() {
try {
// Create a new HttpWebRequest object. Make sure that
// a default proxy is set if you are behind a firewall.
HttpWebRequest* myHttpWebRequest1 =
dynamic_cast<HttpWebRequest*>(WebRequest::Create(S"https://www.contoso.com"));
myHttpWebRequest1->KeepAlive=false;
// Assign the response object of HttpWebRequest to a HttpWebResponse variable.
HttpWebResponse* myHttpWebResponse1 =
dynamic_cast<HttpWebResponse*>(myHttpWebRequest1->GetResponse());
Console::WriteLine(S"\nThe HTTP request Headers for the first request are: \n {0}",
myHttpWebRequest1->Headers);
Console::WriteLine(S"Press Enter Key to Continue..........");
Console::Read();
Stream* streamResponse = myHttpWebResponse1->GetResponseStream();
StreamReader* streamRead = new StreamReader(streamResponse);
Char readBuff[] = new Char[256];
int count = streamRead->Read(readBuff, 0, 256);
Console::WriteLine(S"The contents of the Html page are.......\n");
while (count > 0) {
String* outputData = new String(readBuff, 0, count);
Console::Write(outputData);
count = streamRead->Read(readBuff, 0, 256);
}
Console::WriteLine();
// Close the Stream object.
streamResponse->Close();
streamRead->Close();
// Release the resources held by response object.
myHttpWebResponse1->Close();
// Create a new HttpWebRequest object for the specified Uri.
HttpWebRequest* myHttpWebRequest2 =
dynamic_cast<HttpWebRequest*>(WebRequest::Create(S"https://www.contoso.com"));
myHttpWebRequest2->Connection=S"Close";
// Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
HttpWebResponse* myHttpWebResponse2 =
dynamic_cast<HttpWebResponse*>(myHttpWebRequest2->GetResponse());
// Release the resources held by response object.
myHttpWebResponse2->Close();
Console::WriteLine(S"\nThe Http RequestHeaders are \n {0}",
myHttpWebRequest2->Headers);
Console::WriteLine(S"\nPress 'Enter' Key to Continue.........");
Console::Read();
} catch (ArgumentException* e) {
Console::WriteLine(S"\nThe second HttpWebRequest Object* has raised an Argument Exception as 'Connection' Property is set to 'Close'");
Console::WriteLine(S"\n {0}", e->Message);
} catch (WebException* e) {
Console::WriteLine(S"WebException raised!");
Console::WriteLine(S"\n {0}", e->Message);
Console::WriteLine(S"\n {0}", __box( e->Status));
} catch (Exception* e) {
Console::WriteLine(S"Exception raised!");
Console::WriteLine(S"Source : {0} " , e->Source);
Console::WriteLine(S"Message : {0} " , e->Message);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard