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.HttpClientSystem.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);
}
}

参见:win10 uwp 访问解决方案文件

访问本地的文件

                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 模拟网页输入

如何使用 C# 爬虫获得专栏博客更新排行 - CSDN博客

2018-8-10-win10-UWP-访问网页的更多相关文章

  1. win10 uwp 访问解决方案文件

    本文讲如何访问解决方案的资源. 我们经常会把一些图片资源放在我们的解决方案,那么从这里拿出来很简单. 我在 Assets 放了图片 1.jpg 那么我要把他拿出来可以 <Image Source ...

  2. win10 uwp 模拟网页输入

    有时候需要获得网页的 js 执行后的源代码,或者模拟网页输入,如点按钮输入文字. 如果需要实现,那么就需要用 WebView ,使用方法很简单. 首先创建一个 WebView ,接下来的所有输入都需要 ...

  3. win10 uwp 商业游戏

    本文告诉大家去做一个商业游戏,游戏很简单,几乎没有什么技术 游戏的开始,需要添加框架库,于是引用我自己写的库. 首先是创建一个启动页面,这个页面是显示启动的. 在显示启动的时候,是需要加载游戏需要使用 ...

  4. win10 uwp httpClient 登陆CSDN

    本文告诉大家如何模拟登陆csdn,这个方法可以用于模拟登陆其他网站. HttpClient 使用 Cookie 我们可以使用下面代码让 HttpClient 使用 Cookie ,有了这个才可以保存登 ...

  5. win10 uwp 使用 Microsoft.Graph 发送邮件

    在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...

  6. Win10 UWP应用发布流程

    简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...

  7. win10 uwp 商业游戏 1.2.1

    上一个游戏已经告诉大家如何写多个游戏,现在继续写这个无聊的游戏 希望大家在看这篇文章之前先看win10 uwp 商业游戏,在这个文章告诉了大家如何创建游戏. 修改数值 可以从上一篇的博客的游戏看到升级 ...

  8. win10 uwp 渲染原理 DirectComposition 渲染

    本文来告诉大家一个新的技术DirectComposition,在 win7 之后(实际上是 vista),微软正在考虑一个新的渲染机制 在 Windows Vista 就引入了一个服务,桌面窗口管理器 ...

  9. win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序

    本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...

  10. win10 uwp 发布旁加载自动更新

    在很多企业使用的程序都是不能通过微软商店发布,原因很多,其中我之前的团队开发了很久的应用,结果发现没有用户能从微软应用商店下载所以我对应用商店没有好感.但是作为一个微软粉丝,怎么能不支持 UWP 开发 ...

随机推荐

  1. Hibernate4教程六:性能提升和二级缓存

    抓取策略(fetching strategy)是指:当应用程序需要在(Hibernate实体对象图的)关联关系间进行导航的时候,Hibernate如何获取关联对象的策略.抓取策略可以在O/R映射的元数 ...

  2. getopts的执行过程

  3. python数字图像处理(一)图像的常见操作

    首先导入必要的库,使用Opencv读入图像,避免复杂的图像解析,同时使用Opencv作为算法的对比,由于使用环境为jupyter使用matplotlib直接可视化 import cv2 import ...

  4. 数据结构---Java---String

    1.概述 1.1 源码(JDK1.8) public final class String implements java.io.Serializable, Comparable<String& ...

  5. RPC服务治理框架(一)RPC技术

    一.RPC是什么 remote procedure call:远程过程调用 过程就是程序,像调用本地方法一样调用远程的过程 RPC采用Client-Server结构,通过request-respons ...

  6. djangorestframework-jwt 分页器 三种

    数据准备 # models class Teacher(models.Model): name = models.CharField(max_length=32) salary = models.De ...

  7. linux基础(六)

    今天我们来看一下Samba服务和nginx服务. Samba服务 1.samba的功能 samba是一个网络服务器,用于Linux和Windows之间共享文件. 2.samba服务的启动.停止.重启  ...

  8. Cisco基础(五):配置静态NAT、配置端口映射、配置动态NAT、PAT配置、办公区Internet的访问

    一.配置静态NAT 目标: 随着接入Internet的计算机数量的不断猛增,IP地址资源也就愈加显得捉襟见肘.事实上,除了中国教育和科研计算机网(CERNET)外,一般用户几乎申请不到整段的C类IP地 ...

  9. SpringMVC架构实现原理

    SpringMVC架构实现原理 一.SpringMVC介绍 Spring mvc是一个基于mvc的web框架.其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Ser ...

  10. (转)MAVEN的安装和Myeclipse+maven的配置和使用

    转:https://blog.csdn.net/shikongshengzhu/article/details/51779159 MAVEN的安装和Myeclipse+maven的配置和使用 步骤如下 ...