手机
当前位置:查字典教程网 >编程开发 >C#教程 >Winform实现调用asp.net数据接口实例
Winform实现调用asp.net数据接口实例
摘要:本文实例讲述了Winform实现调用asp.net数据接口的方法,分享给大家供大家参考。具体实现方法如下:一、问题:最近一个WPF项目需要改...

本文实例讲述了Winform实现调用asp.net数据接口的方法,分享给大家供大家参考。具体实现方法如下:

一、问题:

最近一个WPF项目需要改写成android项目,思路是在asp.net项目中编写一个通用接口,便于其它平台下调用数据。刚接触到这些东西的时候完全是一头雾水,最根本的原因是不明白网站中的一个网页,为什么其它项目就可以访问它,并获取数据。带着疑问在asp.net项目编写一个简单的数据接口,并新建一个小winform项目直接访问它。

二、解决方法:

在asp.net项目中编写一个数据接口,使用反射辨别响应的方法;以及获取接口的数据。

这里仅仅是介绍如何使用它们,而不讲述使用它们的基本原理,感兴趣的朋友可以在查阅相关资料的基础上做进一步的研究。

三、主要内容:

1、asp.net项目下编写数据接口

2、使用反射分辨调用方法

3、新建一个winform项目测试接口的正确性

现分述如下:

1、在asp.net项目下编写一简单接口

编写一个方法,构造一个json字符串Response即可。代码如下:

复制代码 代码如下:private void ExamInfoLogin()

{

string aa = "8";

string bb = "9";

string roomName = Request.Form["RoomName"];

if (roomName == "806")

{

aa = "7";

}

StringBuilder jsonStringBuilder = new StringBuilder();

jsonStringBuilder.Append("{");

jsonStringBuilder.Append(""UName":"").Append(aa).Append("",");

jsonStringBuilder.Append(""Password":"").Append(bb).Append(""");

jsonStringBuilder.Append("}");

Response.Write(jsonStringBuilder.ToString());

}

2、使用反射选取调用方法

假设在aspx页面中有很多方法,而在使用过程中往往仅需要调用其中的某一个方法,此处用反射选取调用方法。

反射过程中使用的常量:

复制代码 代码如下:private const string PAGE_PATH_INFO = "/AppDataInterface/ExamLogin.aspx";//页面

private const string ASSEMBLY_NAME = "OSCEWEB";//程序集

private const string CLASS_NAME = "OSCEWEB.AppDataInterface.ExamLogin";//类名

重写OnInit方法:

复制代码 代码如下:protected override void OnInit(EventArgs e)

{

string pathInfo = Request.Params["PATH_INFO"];

if (pathInfo.StartsWith(PAGE_PATH_INFO + "/"))

{

string[] nameList = pathInfo.Substring(PAGE_PATH_INFO.Length + 1).Split('/');

if (nameList.Length < 1)

{

Response.End();

return;

}

try

{

Assembly assembly = Assembly.Load(ASSEMBLY_NAME);

Type type = assembly.GetType(CLASS_NAME);

MethodInfo method = type.GetMethod(nameList[0], System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);

method.Invoke(this, null);

}

catch (Exception ex)

{

Response.End();

return;

}

}

}

在Page_Load方法中添加:

复制代码 代码如下:if (Request.Params["PATH_INFO"].StartsWith(PAGE_PATH_INFO + "/"))

{

Response.End();

}

3、新建一Winform项目,访问asp.net中数据接口

发布asp.net项目,网址:http://192.168.4.22:8005

1)无需向数据接口传递数据:

复制代码 代码如下:private void button1_Click(object sender, EventArgs e)

{

string strURL = "http://192.168.4.22:8005/AppDataInterface/ExamLogin.aspx/ExamInfoLogin";

request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);

response = (System .Net.HttpWebResponse )request .GetResponse ();

System.IO.StreamReader streamReader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);

string responseText = streamReader.ReadToEnd();

streamReader.Close();

MessageBox.Show(responseText);

}

得到的数据是:{"UName":"8","Password":"9"}

2)以post方式向数据接口传递数据,获取接口数据

复制代码 代码如下:private void button2_Click(object sender, EventArgs e)

{

string strURL = "http://192.168.4.22:8005/AppDataInterface/ExamLogin.aspx/ExamInfoLogin";

request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);

request.Method = "POST";

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

string param = "RoomName=806";

ASCIIEncoding encoding = new ASCIIEncoding ();

byte[] data = encoding.GetBytes(param);

request.ContentLength = data.Length;

System.IO.Stream stream = request.GetRequestStream();

stream.Write(data, 0, data.Length);

stream.Close();

response = (System.Net.HttpWebResponse)request.GetResponse();

System.IO.StreamReader streamReader = new System.IO.StreamReader(response.GetResponseStream(), Encoding.UTF8);

string responseText = streamReader.ReadToEnd();

streamReader.Close();

MessageBox.Show(responseText);

}

得到的数据:{"UName":"7","Password":"9"}

4、总结

按照上述介绍的一些方法可以完成项目,对此感兴趣的朋友可以动手实践一下,相信会有新的收获!希望本文所述对大家的C#程序设计有所帮助。

【Winform实现调用asp.net数据接口实例】相关文章:

winform下实现win7 Aero磨砂效果实现代码

简介Winform中创建用户控件

winform调用javascript的小例子

C#数据结构之循环链表的实例代码

c#实现sunday算法实例

利用C#实现分布式数据库查询

C#实现路由器断开连接,更改公网ip的实例代码

C# Winform 实现屏蔽键盘的win和alt+F4的实现代码

C#中通过API实现的打印类 实例代码

.Net Winform开发笔记(一)

精品推荐
分类导航