在开发中,要求桌面应用程序和已有的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
领取专属 10元无门槛券
私享最新 技术干货