win10 uwp 网络编程 带Header的WebRequest获取BufferHttpClient 使用 Cookie

我们来弄简单协议

首先第一层是传输层,这一层是Head+Data

其中Head就是有传输的头,加上Data长度

Head=Head+length

length是Data长度

上面传输的头,Head=Head+length 中的第二个Head,包含 传输者id,当前传输是传输的消息最后一段还是中间,当前传输 是服务器第消息

传输的最后一段还是中间指的是在上一层,有很长的数据,被拆为多个Data发送, 这时就需要标注接下来几条消息要合并为一条

传输头Head=id+stx+count

count就是服务器随机给的序号,客户端接收到,就返回接收到+count,这样服务器就可以知道客户端收到,如果超过时间,那么服务器就重新发送

id、count都是16位int,我上面说的服务器其实就是发送的,客户端就是接收,不是说服务器协议

我们接收是byte那么如何从byte两个转换为int,其实简单,short才对,不过说16位那是我C艹

我们一个byte是高8位,一个是低8位

value = 256 * high + low;

(high << 8) | low

stx=stx+length stx和length是8位byte

stx=1是发送中间

stx=2是发送结束

stx=3是回复

length在stx=1 stx=2是表示消息顺序,如果接收到stx=1那么把消息放到缓存区,然后直到接收到stx=2才把消息合并,通知,这时需要按照length顺序组合,如果接收到的length不对,缺少,那么废掉信息。

我们开始接收就接收16+16+16+16位,然后使用length接收下面,这样就可以解决

技术很简单,其实我们需要做服务器,和客户端,一般我们可以在UWP做两个,这个参见http://www.wangchenran.com/uwp-streamsocket-chatroom-1.html

我们可以用传输数据,可以传输文本,这个我们需要传什么需要一个协议,这个是应用高层,前面说的是协议传输

带Header的WebRequest

[HttpRequestMessage](HttpRequestMessage ) [httpRequestMessage](httpRequestMessage ) = new [HttpRequestMessage(](HttpRequestMessage( )
    HttpMethod.Post, new Uri("http://www.contoso.com"));
httpRequestMessage.Content = new HttpStringContent("hello, world");
httpRequestMessage.Headers.Append("X-My-Client","true");

myWebView.NavigateWith[HttpRequestMessage(httpRequestMessage);](HttpRequestMessage(httpRequestMessage); )
            var url = new Uri("http://www.baidu.com", UriKind.Absolute);
            var [httpClient](httpClient ) = new System.Net.[Http.HttpClient();](Http.HttpClient(); )
            httpClient.DefaultRequestHeaders.Add("apikey", "123456");
            var reponse = await [httpClient.GetStreamAsync(url);](httpClient.GetStreamAsync(url); )
            var streamReader = new StreamReader(reponse, Encoding.UTF8);
            var jsonString = streamReader.ReadToEnd();
            var jsonObject = JsonObject.Parse(jsonString);

获取Buffer

                Windows.Web.[Http.HttpClient](Http.HttpClient ) [http](http ) = new Windows.Web.[Http.HttpClient();](Http.HttpClient(); )
                IBuffer buffer = await [http.GetBufferAsync(uri);](http.GetBufferAsync(uri); )

参见:https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.controls.webview.navigatewithhttprequestmessage.aspx

HttpClient 使用 Cookie

参见:https://stackoverflow.com/questions/41599384/httpclient-cookie-issue

如果不想自己写,请看 https://github.com/chenrensong/WebSocket.UWP

https://github.com/rdavisau/sockets-for-pcl


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

MVC5 网站开发之九 网站设置

网站配置一般用来保存网站的一些设置,写在配置文件中比写在数据库中要合适一下,因为配置文件本身带有缓存,随网站启动读入缓存中,速度更快,而保存在数据库中要单独为一...

3005
来自专栏Golang语言社区

【Golang语言社区投稿】golang高并发基于协程,通道的任务池

要点: 封装了协程模型基于select模型的通道传递; 支持同步和异步添加任务;由于golang无函数指针,任务函数利用了go 反射机制支持可变参的入参 开发者...

55311
来自专栏技术小讲堂

ASP.NET AJAX(8)__Microsoft AJAX Library中异步通信层的使用什么是异步通信层Micorsoft AJAX Library异步通信层的组成WebRequestExec

什么是异步通信层 Microsoft AJAX Library的组长部分之一 负责ASP.NET AJAX框架中所有的客户端与服务器端的通信 其默认实现了封装了...

3525
来自专栏木宛城主

ASP.NET那点不为人知的事(三)

有了以下的知识: ASP.NET那点不为人知的事(一) ASP.NET那点不为人知的事(二) 想必开发一个小型服务器以不是问题了,功能补复杂,能够响应...

2059
来自专栏程序员的SOD蜜

常见.NET功能代码汇总

1,在Web上修改指定文件位置的Web.config 这里需要使用 WebConfigurationManager 类,但必须使用WebConfiguratio...

4379
来自专栏Golang语言社区

关于JSON.stringify和Unicode编码,需要注意的几点

1JSON.stringify会自动把所要转换内容中的汉字转换为Unicode编码 2浏览器间有差别,个别浏览器会把将要提交表单内容中的Unicode编码自动转...

3824
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF...

4125
来自专栏智能大石头

XCode读取Excel数据(适用于任何数据库)

虽然是充血模型,虽然是强类型,XCode同样支持遍历任何数据库结构,并以强类型(相对于DataSet等字典访问)方式读取数据。 要遍历数据库结构是很容易的事情,...

2178
来自专栏知识分享

C#上位机串口控制12864显示

实现的效果 ? ? ? ? ? 上面是用Proteus仿真的,,对了如果自己想用proteus仿真需要安装下面这个软件 ? 再看一下实物显示效果 ? ? ? ?...

9095
来自专栏快乐八哥

浅谈ASP.NET客户端回调

最近同学要做一个项目,需求是:音乐播放器。大致UI如图: ? 点击右边的“X”图标,可以删除当前选定的这首歌。因为现实界面的代码是复制过来的,并且前辈使用的是...

22010

扫码关注云+社区

领取腾讯云代金券