首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C#学习之HttpWebRequest

在开发中,要求桌面应用程序和已有的WebApp进行数据交换,这里数据交换也就是传统的客户端和服务器模式,只是现在的服务器已经建好了,不容易修改,因此更多的重点应该放在客服端(桌面应用程序)。

服务器端使用的tomcat,后台用的jsp,后台能够给我api,因此通过api,使用get或者post方法即可,查询相关文档,.NET框架里面有提HttpWebRequest。使用起来也极为方便,其实就是使用了http协议,GET/POST模拟打开网页提交数据的一个过程。

GET- 从指定的资源请求数据。

POST- 向指定的资源提交要被处理的数据

GET 方式(不带参数):

通过跟后台人员的协商,它提供api:http://192.168.0.102/api/loginU

Code如下:

var url=“http://192.168.0.102/api/loginU”;

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( url );

req.Method = "GET";

WebResponse wr = req.GetResponse()

Stream respStream=wr.GetResponseStream();

using(

StreamReader reader=

new Stream(respStream,Encoding.GetEncoding("utf-8")))

{

string data;

data=reader.ReadLine();

//返回的是一个json数据包。因此需要进行格式化Json.

DataJson dj=JsonConver.DeserializeObject(data)

//DataJson是根据返回json数据包定义的类

//.net4.0框架里面的内容,json格式化。

}

这样子就可以通过get方法对服务器发起请求并获取相应的数据。

GET 方式(带参数):

Code如下:

var url=“http://192.168.0.102/api/loginU”+

HttpUtility.UrlEncode("参数一", myEncoding) + "="

+ HttpUtility.UrlEncode("值一", myEncoding);

//这里使用HttpUtility.UrlEncode主要是考虑到会用到汉字,如果不使用该方法,服务器会识别不了。当然如果参数名和值都是因为的一般不会出现该问题。

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create(url);

req.Method = "GET";

WebResponse wr = req.GetResponse()

Stream respStream=wr.GetResponseStream();

using(

StreamReader reader=

new Stream(respStream,Encoding.GetEncoding("utf-8")))

{

string data;

data=reader.ReadLine();

//返回的是一个json数据包。因此需要进行格式化Json.

DataJson dj=JsonConver.DeserializeObject(data)

//DataJson是根据返回json数据包定义的类

//.net4.0框架里面的内容,json格式化。

}

POST 方式:

post方式

POST 方式通过在页面内容中填写参数的方法来完成数据的提交,参数的格式和 GET 方式一样,是类似于 参数名1=参数1&参数名2参数2 这样的结构。

Code如下:

string param = "stu=yuri&no=1";

byte[] bs = Encoding.ASCII.GetBytes(param);

HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create( "http://192.168.0.102/api/loginU" );

req.Method = "POST";

req.ContentType = "application/x-www-form-urlencoded";

req.ContentLength = bs.Length;

using (Stream reqStream = req.GetRequestStream())

{

reqStream.Write(bs, 0, bs.Length);

}

using (WebResponse wr = req.GetResponse())

{

//在这里对接收到的页面内容进行处理

}

同理如果是参数包含了中文需要加上HttpUtility.UrlEncode()。

结语:实现的方法有多种多样的,根据实际情况,自己挑选。本文主要是介绍HttpWebRequest与服务器通信,至于get和post两种方式的优缺点,本文不做研究,一直做的桌面程序,对于http协议也没什么深入了解,也无法做深入研究。推荐一下其他人的博客,研究算不错的。

https://www.cnblogs.com/logsharing/p/8448446.html

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180911G1T8PU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券