Windows Phone 十五、HttpWebRequest

Windows 运行时中支持网络资源访问的对象:HttpWebRequest 对象

发送 GET/POST 请求,HttpHelper 封装,超时控制。

HttpClient 对象

发送 GET/POST 请求,请求进度监控。

两种常用请求方式:GET 请求

主要是从服务器请求数据

可以传递有限(1024字节)数据

POST 请求

主要是往服务器发送数据,传递数据大小没有限制。

也可以接收服务端数据,但大多数是请求结果标识。

HttpWebRequest
1     <Grid>
2         <WebView
3             x:Name="webView"/>
4     </Grid>
 1         protected async override void OnNavigatedTo(NavigationEventArgs e)
 2         {
 3             //创建请求对象
 4             HttpWebRequest request = WebRequest.CreateHttp("http://www.baidu.com");
 5             //设置请求参数
 6             request.Accept = "*/*";
 7             request.Method = "GET";
 8             request.Headers["Cookie"] = "key1=value;key2=val";//密码存储区
 9             //发送请求,获取服务端响应
10             var response = await request.GetResponseAsync();
11             using (var stream = response.GetResponseStream())
12             {
13                 using (var reader = new StreamReader(stream))
14                 {
15                     var result = await reader.ReadToEndAsync();
16                     webView.NavigateToString(result);
17                 }
18             }
19         }

Index

1     <StackPanel>
2         <TextBox x:Name="txt1"/>
3         <TextBox x:Name="txt2"/>
4         <TextBox x:Name="txt3"/>
5         <Button
6             Content="Send"
7             Click="Button_Click"/>
8     </StackPanel>
 1         private async void Button_Click(object sender, RoutedEventArgs e)
 2         {
 3             //建立WebRequest对象
 4             var request = HttpWebRequest.Create("http://localhost:7080/index.ashx");
 5             //设置Method类型为GET/POST
 6             request.Method = "POST";
 7             //设置请求Cookie
 8             request.Headers["Cookie"] = "cookie_key1=CookieValue1;cookie_key2=CookieValue2";
 9             //设置请求UserAgent为常用Chrome代理
10             request.Headers["User-Agent"] = "Mozilla/5.0(Windows NT 6.3;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/41.0.2243.0 safari/537.36";
11             //设置请求身份验证网络凭据,用于网络身份验证
12             //request.Credentials = new NetworkCredential("111", "2222");
13             var bs = Encoding.UTF8.GetBytes("123:321");
14             request.Headers["Authorization"] = string.Format("Basic{0}", Convert.ToBase64String(bs, 0, bs.Length));
15 
16             //设置请求提交格式
17             request.ContentType = "application/x-www-form-urlencode";
18             //待发送的数据 格式与QueryString格式相同
19             var sendString = string.Format("txt1={0}&txt2={1}&txt3=(2)", txt1.Text, txt2.Text, txt3.Text);
20             //转换成字节数组用于发送
21             var buffer = Encoding.UTF8.GetBytes(sendString);
22             //设置发送请求流
23             using (var stream = await request.GetRequestStreamAsync())
24             {
25                 //写到请求体中
26                 stream.Write(buffer, 0, buffer.Length);
27             }
28 
29             //发送请求,获取服务端响应
30             var response = await request.GetResponseAsync();
31             using (var stream = response.GetResponseStream())
32             {
33                 using (var reader = new StreamReader(stream))
34                 {
35                     var result = await reader.ReadToEndAsync();
36                 }
37             }
38         }
原文地址:https://www.cnblogs.com/includeling/p/4598803.html