请求/相应模型
主要用到3个类:URI,WebRequest,WeRresponse.
和internet通信流程:
1):创建 WebRequest
WebRequest wReq = WebRequest.Create(" http://www.contoso.com/");
2):在 WebRequest 中设置任何所需的属性值。例如,若要支持身份验证,请将 Credentials 属性设置为 NetworkCredential 类的实例
wReq.Credentials =
new NetworkCredential(UserName, SecurelyStoredPassword);
若要访问
HttpWebRequest
的 HTTP 特定的属性,请将
WebRequest 转换为
HttpWebRequest(别的也一样处理)。
3):从 Internet 下载资源,调用 WebRequest 的 GetResponse 方法。调用 WebRequest 的 GetRequestStream 方法,并使用结果 Stream 对象编写数据,
WebResponse wResp = wReq.GetResponse();
4):GetResponseStream 方法从网络资源中获取包含响应数据的流。
Stream respStream = wResp.GetResponseStream();
StreamReader reader = new StreamReader(respStream, Encoding.ASCII);
String respHTML = reader.ReadToEnd();
Console.WriteLine(respHTML);
respStream.Close();//别忘记这一步。
HttpWebRequest.ContentType
获取或设置 Content-type HTTP 标头的值。
HttpWebRequest.Method 属性
获取或设置请求的方法
可以将 Method 属性设置为任何 HTTP 1.1 协议谓词:GET、HEAD、POST、PUT、DELETE、TRACE 或 OPTIONS。
如果 ContentLength 属性被设置为 -1 以外的任何值,则必须将 Method 属性设置为上载数据的协议属性。
HttpWebRequest.ContentLength 属性
要发送到 Internet 资源的数据的字节数。默认值为 -1,该值指示尚未设置该属性,并且没有要发送的请求数据。
ContentLength 属性包含要作为请求发送的 Content-length HTTP 标头值。
ContentLength 属性中除了 -1 以外的任何值指示请求将上载数据并且只允许在 Method 属性中设置上载数据的方法。
一旦 ContentLength 属性被设置为某个值,那个字节数就必须写入通过调用 GetRequestStream 或同时调用 BeginGetRequestStream 和 EndGetRequestStream 返回的请求流。
string postData="firstone="+inputData;
ASCIIEncoding encoding=new ASCIIEncoding();
byte[] byte1=encoding.GetBytes(postData);
// Set the content type of the data being posted.
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
// Set the content length of the string being posted.
myHttpWebRequest.ContentLength=postData.Length;
Stream newStream=myHttpWebRequest.GetRequestStream();
newStream.Write(byte1,0,byte1.Length);
Console.WriteLine("The value of 'ContentLength' property after sending the data is {0}",myHttpWebRequest.ContentLength);
newStream.Close();