2018-8-10-win10-UWP-访问网页
| title | author | date | CreateTime | categories |
|---|---|---|---|---|
|
win10 UWP 访问网页
|
lindexi
|
2018-08-10 19:16:51 +0800
|
2018-2-13 17:23:3 +0800
|
Win10 UWP
|
本文告诉大家如何使用多个方式访问网页,可以获得网页源代码,可以做爬取网络信息。
Windows10 UWP 要访问 csdn博客,可以使用Windows.Web.Http.HttpClient,下面尝试访问一下我的博客 http://blog.csdn.net/lindexi_gd/article/details/50392343
我先在 xaml 添加一个 TextBlock ,这个 TextBlock 是 tb 用来拿到我访问页面拿到的内容
string str = "http://blog.csdn.net/lindexi_gd/article/details/50392343";
using (Windows.Web.Http.HttpClient client = new Windows.Web.Http.HttpClient())
{
try
{
Windows.Web.Http.HttpResponseMessage response = await client.GetAsync(new Uri(str));
if (response != null && response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok)
{
using (Windows.Storage.Streams.InMemoryRandomAccessStream stream = new Windows.Storage.Streams.InMemoryRandomAccessStream())
{
await response.Content.WriteToStreamAsync(stream);
stream.Seek(0);
Windows.Storage.Streams.Buffer buffer = new Windows.Storage.Streams.Buffer((uint)stream.Size);
await stream.ReadAsync(buffer, (uint)stream.Size, Windows.Storage.Streams.InputStreamOptions.Partial);
using (Windows.Storage.Streams.DataReader dataReader = Windows.Storage.Streams.DataReader.FromBuffer(buffer))
{
tb.Text = dataReader.ReadString((uint)stream.Size);
}
}
}
}
catch
{
}
在前台有一个TextBlock,名字是 tb ,界面还有一个 按钮,按钮点击触发上面代码,访问博客,得到的内容放在 tb 显示
这时按下 F5 运行,可以看到下面的界面
除了 httpClient 还可以使用 HttpWebRequest ,请看下面
System.Net.HttpWebRequest request = null;
request = System.Net.WebRequest.Create(str) as System.Net.HttpWebRequest;
request.Accept = "text/html, application/xhtml+xml, image/jxr, */*";
//有些网站需要 Accept 如果这个不对,不返回
request.Method = "GET";
request.CookieContainer = new System.Net.CookieContainer();
try
{
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)await request.GetResponseAsync();
if (response != null && response.StatusCode==System.Net.HttpStatusCode.OK)
{
tb.Text = response.ContentLength.ToString();
using (Stream stream= response.GetResponseStream())
{
byte[] buffer = new byte[10240];
//实际可以用其他方法
stream.Read(buffer, 0, 10240);
tb.Text = System.Text.Encoding.UTF8.GetString(buffer);
//在哪知道是UTF8?实际上解析网页这里比较难,我用的是知道他是 UTF8
}
}
}
catch
{
}
需要注意 Windows.Web.Http.HttpClient 和 System.Net.Http.HttpClient 是不相同,请看揭秘Windows10 UWP中的httpclient接口[2] - 蘑菇先生 - 博客园 和 void 大神写的 详解 UWP (通用 Windows 平台) 中的两种 HttpClient API
设置代理
现在的 UWP 程序只能使用 IE 的代理,而不能自定义代理,虽然存在 httpClientHandler.Proxy 可以设置 IWebProxy ,我也尝试写了自己的本地代理,但是没有访问
public class WebProxy : IWebProxy
{
/// <inheritdoc />
public Uri GetProxy(Uri destination)
{
return new Uri("socks5://127.0.0.1:10112");
} /// <inheritdoc />
public bool IsBypassed(Uri host)
{
return false;
} /// <inheritdoc />
public ICredentials Credentials { get; set; }
}
我在 GetProxy 使用断点,在使用下面代码运行,没有进入刚才写的函数
var httpClientHandler = new HttpClientHandler();
httpClientHandler.UseProxy = true;
httpClientHandler.Proxy = new WebProxy(); var httpClient = new HttpClient(httpClientHandler); var str = await httpClient.GetStringAsync(new Uri("https://www.google.com")); Debug.WriteLine(str);
WebView
还有一个简单的方法是使用 WebView 就是 Edge 浏览器,所以通过浏览器可以做出更强大的效果。
先在界面添加一个按钮和控件
<WebView x:Name="TraymorxasluPoocigur"></WebView>
<Button HorizontalAlignment="Center" Content="确定" Click="FersamaltaiJearxaltray_OnClick"></Button>
在按钮点击的时候,尝试下面几个方式访问网页
private void FersamaltaiJearxaltray_OnClick(object sender, RoutedEventArgs e)
{
TraymorxasluPoocigur.Navigate(new Uri("http://lindexi.github.io"));
}
访问解决方案资源
private void FersamaltaiJearxaltray_OnClick(object sender, RoutedEventArgs e)
{
try
{
TraymorxasluPoocigur.Navigate(new Uri("ms-appx:///林德熙.html"));
}
catch (Exception exception)
{
Debug.WriteLine(exception.Message);
}
}
访问本地的文件
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///林德熙.html"));
var folder = ApplicationData.Current.LocalFolder;
var str = await FileIO.ReadTextAsync(file);
file = await folder.CreateFileAsync("林德熙.html", CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, str);
TraymorxasluPoocigur.Navigate(new Uri("ms-appdata:///local/林德熙.html"));
访问字符串
var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///林德熙.html"));
var str = await FileIO.ReadTextAsync(file);
TraymorxasluPoocigur.NavigateToString(str);
参见:
win10 uwp 模拟网页输入
2018-8-10-win10-UWP-访问网页的更多相关文章
- win10 uwp 访问解决方案文件
本文讲如何访问解决方案的资源. 我们经常会把一些图片资源放在我们的解决方案,那么从这里拿出来很简单. 我在 Assets 放了图片 1.jpg 那么我要把他拿出来可以 <Image Source ...
- win10 uwp 模拟网页输入
有时候需要获得网页的 js 执行后的源代码,或者模拟网页输入,如点按钮输入文字. 如果需要实现,那么就需要用 WebView ,使用方法很简单. 首先创建一个 WebView ,接下来的所有输入都需要 ...
- win10 uwp 商业游戏
本文告诉大家去做一个商业游戏,游戏很简单,几乎没有什么技术 游戏的开始,需要添加框架库,于是引用我自己写的库. 首先是创建一个启动页面,这个页面是显示启动的. 在显示启动的时候,是需要加载游戏需要使用 ...
- win10 uwp httpClient 登陆CSDN
本文告诉大家如何模拟登陆csdn,这个方法可以用于模拟登陆其他网站. HttpClient 使用 Cookie 我们可以使用下面代码让 HttpClient 使用 Cookie ,有了这个才可以保存登 ...
- win10 uwp 使用 Microsoft.Graph 发送邮件
在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...
- Win10 UWP应用发布流程
简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...
- win10 uwp 商业游戏 1.2.1
上一个游戏已经告诉大家如何写多个游戏,现在继续写这个无聊的游戏 希望大家在看这篇文章之前先看win10 uwp 商业游戏,在这个文章告诉了大家如何创建游戏. 修改数值 可以从上一篇的博客的游戏看到升级 ...
- win10 uwp 渲染原理 DirectComposition 渲染
本文来告诉大家一个新的技术DirectComposition,在 win7 之后(实际上是 vista),微软正在考虑一个新的渲染机制 在 Windows Vista 就引入了一个服务,桌面窗口管理器 ...
- win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序
本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...
- win10 uwp 发布旁加载自动更新
在很多企业使用的程序都是不能通过微软商店发布,原因很多,其中我之前的团队开发了很久的应用,结果发现没有用户能从微软应用商店下载所以我对应用商店没有好感.但是作为一个微软粉丝,怎么能不支持 UWP 开发 ...
随机推荐
- VMware Converter Standalone迁移概要
VMware Converter 迁移工具使用:1.基本概念 1.1基本组件: converter standalone server:包含server和worker两个服务,这两个服务经常一起安装 ...
- 一、spring的基本认识
Spring的认识 Spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用 Spring是于2003 年兴起的一个轻量级的J ...
- Springboot1.5.9整合WebSocket
一.WebSocket介绍 1.WebSocket是什么? WebSocket是协议,是HTML5开始提供的基于TCP(传输层)的一种新的网络协议, 它实现了浏览器与服务器全双工(full-duple ...
- vue实现全选反选--简单使用
最近需要用到vue的反选全选功能,于是就在网上找了一些代码实现,发现都不能够完美的实现.于是乎决定自己写出一套.经过一翻努力,完美了进行了实现.bug也已经修复完毕,希望能够帮助到大家! < ...
- awk 起始位置和长度和 mf 一致
1位开始 , 925开始 截取24 awk '{OFS="";print(substr($0,925,24),substr($0,1,24),substr($0,436,1),&q ...
- Quartz.Net 任务调度之传递参数(2)
1.jobDetail //添加 //Key:Value jobDetail.JobDataMap.Add("张翼德", "张翼德"); jobDetail.J ...
- Ververica Platform-阿里巴巴全新Flink企业版揭秘
摘要:2019云栖大会大数据 & AI专场,阿里巴巴资深技术专家王峰带来“Ververica Platform-阿里巴巴全新Flink企业版揭秘”的演讲.本文主要从Ververica由来开始谈 ...
- Windows最值得安装的小众软件
用电脑这么久,也琢磨出自己的一些使用心得.今天和大家分享几个Windows效率工具.数量不多,但每个都是精品. ▌软件下载-卫星公众好「悦享软件」,在后台会话框中回复关键字:h108 1.Ditto ...
- C#将数据导入到Excel表格中
public static DataTable GetExcelToDataTableBySheet(string FileFullPath, string SheetName){ ...
- 【c#技术】一篇文章搞掂:水晶报表
更新数据源 应该先从[数据库]——[数据库专家]——[刷新]——[数据库]——[验证数据库] 必须先刷新,不然验证数据库无效 XP下,打开水晶报表提示无法创建目录或文件,删除临时目录Temp中文件即可 ...