win10 UWP GET Post
win10 应用应该是要有访问网络,网络现在最多的是使用GET,Post,简单的使用,可以用网络的数据:获得博客的访问量。
在使用网络,我们需要设置Package.appxmanifest
网络请求使用GET,首先有要访问的网站
string url = "http://blog.csdn.net/lindexi_gd/article/details/50830924";
//url是我一篇博客,win10 UWP Hmac,我很多博客都是读书笔记
WebRequest是请求基类,需要使用WebRequest.Create(url);
request.Method = "GET";
UWP 的Header设置
request.Headers["Cookie"]
接受需要一个函数 AsyncCallback
private void response_callback(IAsyncResult result)
request.BeginGetResponse(response_callback, request);
response_callback接受信息HttpWebRequest http_web_request = (HttpWebRequest)result.AsyncState;
WebResponse web_response = http_web_request.EndGetResponse(result);
using (Stream stream = web_response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream))
{
string content = reader.ReadToEnd();
}
}
我们需要对content进行正则
正则可以看 正则快速
Regex regex = new Regex(@"<span class=""link_view"" title=""阅读次数"">(\d\d\d人阅读)</span>");
string str = regex.Match(content).Result("阅读:$1");
reminder(str);
如果使用UI,直接使用会出现
我们写函数
private async void reminder(string str)
{
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
tb.Text += str;
});
}
网络很容易就异常
catch (WebException e)
{
switch (e.Status)
{
case WebExceptionStatus.CacheEntryNotFound:
break;
case WebExceptionStatus.ConnectFailure:
reminder("ConnectFailure:远程服务器连接失败");
break;
case WebExceptionStatus.ConnectionClosed:
break;
case WebExceptionStatus.KeepAliveFailure:
break;
case WebExceptionStatus.MessageLengthLimitExceeded:
reminder("MessageLengthLimitExceeded 网络请求消息长度受到限制");
break;
case WebExceptionStatus.NameResolutionFailure:
break;
case WebExceptionStatus.Pending:
reminder("Pending 内部异步挂起");
break;
case WebExceptionStatus.PipelineFailure:
break;
case WebExceptionStatus.ProtocolError:
break;
case WebExceptionStatus.ProxyNameResolutionFailure:
break;
case WebExceptionStatus.ReceiveFailure:
break;
case WebExceptionStatus.RequestCanceled:
break;
case WebExceptionStatus.RequestProhibitedByCachePolicy:
break;
case WebExceptionStatus.RequestProhibitedByProxy:
break;
case WebExceptionStatus.SecureChannelFailure:
break;
case WebExceptionStatus.SendFailure:
break;
case WebExceptionStatus.ServerProtocolViolation:
break;
case WebExceptionStatus.Success:
break;
case WebExceptionStatus.Timeout:
break;
case WebExceptionStatus.TrustFailure:
break;
case WebExceptionStatus.UnknownError:
break;
}
reminder(e.Message);
}
post需要把request.Method = "POST";
传输在request.BeginGetRequestStream(respeonse_streamCallback, request);
private void respeonse_streamCallback(IAsyncResult result)
{
HttpWebRequest http_web_request = (HttpWebRequest) result.AsyncState;
using (Stream stream=http_web_request.EndGetRequestStream(result))
{
//发送byte
string str = "c";
byte[] buffer = Encoding.UTF8.GetBytes(str);
stream.Write(buffer,0,buffer.Length);
}
http_web_request.BeginGetResponse(response_callback, http_web_request);
}
简单方法
HttpClient http=new HttpClient();
reminder(await http.GetStringAsync(new Uri(url)));
获整个对象
HttpResponseMessage response = await http.GetAsync(new Uri(url));
reminder(await response.Content.ReadAsStringAsync());
HttpClient http = new HttpClient();
HttpStringContent http_string =new HttpStringContent("a");
HttpResponseMessage response = await http.PostAsync(new Uri(url), http_string);
string str = await response.Content.ReadAsStringAsync();
reminder(str);
HttpClient http = new HttpClient();
InMemoryRandomAccessStream memory =new InMemoryRandomAccessStream();
HttpStreamContent stream=new HttpStreamContent(memory);
HttpResponseMessage response = await http.PostAsync(new Uri(url), stream);
string str = await response.Content.ReadAsStringAsync();
reminder(str);
HttpClient http = new HttpClient();
InMemoryRandomAccessStream memory = new InMemoryRandomAccessStream();
HttpStreamContent stream = new HttpStreamContent(memory);
HttpRequestMessage request=new HttpRequestMessage(HttpMethod.Post,new Uri(url));
request.Content = stream;
HttpResponseMessage response = await http.SendRequestAsync(request);
string str = await response.Content.ReadAsStringAsync();
看到有人说CSDN博客访问统计是Cache,如果我们要有很多访问,可以使用
filter.CacheControl.WriteBehavior = HttpCacheWriteBehavior.NoCache;
await Task.Run(() =>
{
reminder("\n");
WebRequest request = WebRequest.Create(url);
request.Method = "GET";
request.Headers["Cookie"] = string.Empty;
request.BeginGetResponse(response_callback, request);
});
我把之前写的一个刷500
cookie可以使用HttpBaseProtocolFilter
设置cookie
HttpCookie cookie = new HttpCookie("名称", "blog.csdn.net", "/")
{
Value = "a",
};
filter.CookieManager.SetCookie(cookie, false);
这写的不好,我将会写网络编程,这一篇会写容易的我的博客授权发在win10.me
win10 UWP GET Post的更多相关文章
- Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App
安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...
- Win10 UWP开发系列:实现Master/Detail布局
在开发XX新闻的过程中,UI部分使用了Master/Detail(大纲/细节)布局样式.Win10系统中的邮件App就是这种样式,左侧一个列表,右侧是详情页面.关于这种 样式的说明可参看MSDN文档: ...
- Win10 UWP开发实现Bing翻译
微软在WP上的发展从原来的Win7到Win8,Win8.1,到现在的Win10 UWP,什么是UWP,UWP即Windows 10 中的Universal Windows Platform简称.即Wi ...
- Win10/UWP开发—使用Cortana语音与App后台Service交互
上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...
- 【Win10 UWP】后台任务与动态磁贴
动态磁贴(Live Tile)是WP系统的大亮点之一,一直以来受到广大用户的喜爱.这一讲主要研究如何在UWP应用里通过后台任务添加和使用动态磁贴功能. 从WP7到Win8,再到Win10 UWP,磁贴 ...
- 【Win10 UWP】URI Scheme(一):Windows Store协议的解析和使用
协议是Windows Phone和Windows Store应用的一个重要特点,可以做到在不同应用之间进行互相呼起调用.小小协议,学问大着呢.我打算写几篇关于协议在UWP中使用的文章. 这一讲的主要对 ...
- 【Win10 UWP】QQ SDK(二):SDK的回调处理
上一讲,我们介绍了QQ SDK的使用方法,请看<[Win10 UWP]QQ SDK(一):SDK基本使用方法> 一. 回调的基本形式 从前面的介绍中我们知道,我们的应用和QQ客户端之间需要 ...
- Win10 UWP应用发布流程
简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...
- 【Win10 UWP】QQ SDK(一):SDK基本使用方法
每当开发一个应用需要社交分享的应用时,总是心里咯噔一下:到底什么时候分享能加上QQ和微信?除了WP8.0版本的微信SDK,官方似乎从未正面发布过适应时代发展的QQ SDK,就连后台,也没有一个可以创建 ...
随机推荐
- 201521123078 《Java程序设计》第6周学习总结
1. 本周学习总结 2. 书面作业 1.clone方法 1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 1.子类要实现Clone ...
- 201521123013 《Java程序设计》第4周学习总结
1. 本章学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 1.多态是面向对象的三大特性之一.多态的意思:相同的形态,可以实不同的行为.Java中实现多 ...
- python学习笔记1.1
- vbs文件共享变量与函数的方法
参考资料: vbs能否像其他编程语言一样,把写好的代码打包成类库以供调用呢?经过搜索和实验,发现vbs文件之间可以互相调用并共享变量,这样我们就不用再反复地编写轮子了. 以下是一个调用实例: ==== ...
- 201521123111《Java程序设计》第13周学习总结
本次作业参考文件 正则表达式参考资料 1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.bai ...
- eclipse版本选择
Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会. Ec ...
- oracle-获取数据库中所有表的注释 comments
公司dba提供的脚本: set serveroutput on set feedback off spool /tmp/getcomments.out select 'comment on table ...
- [UIKit学习]08.关于自定义控件
自定义控件 选用xib用自定义view代码与xib相关联 示例代码 + (instancetype)shopView { return [self shopViewWithShop:nil]; } + ...
- C/C++ 进程通讯(命名管道)
服务端代码: // pipe_server.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> ...
- Oracle DBA 常用查询
1. 查询系统所有对象 select owner, object_name, object_type, created, last_ddl_time, timestamp, statusfrom db ...