源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Winform实现调用asp.net数据接口实例

  • 时间:2022-04-06 14:30 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Winform实现调用asp.net数据接口实例
本文实例讲述了Winform实现调用asp.net数据接口的方法,分享给大家供大家参考。具体实现方法如下: [b]一、问题:[/b] 最近一个WPF项目需要改写成android项目,思路是在asp.net项目中编写一个通用接口,便于其它平台下调用数据。刚接触到这些东西的时候完全是一头雾水,最根本的原因是不明白网站中的一个网页,为什么其它项目就可以访问它,并获取数据。带着疑问在asp.net项目编写一个简单的数据接口,并新建一个小winform项目直接访问它。 [b]二、解决方法:[/b] 在asp.net项目中编写一个数据接口,使用反射辨别响应的方法;以及获取接口的数据。 这里仅仅是介绍如何使用它们,而不讲述使用它们的基本原理,感兴趣的朋友可以在查阅相关资料的基础上做进一步的研究。 [b]三、主要内容:[/b] 1、asp.net项目下编写数据接口 2、使用反射分辨调用方法 3、新建一个winform项目测试接口的正确性 现分述如下: 1、在asp.net项目下编写一简单接口 编写一个方法,构造一个json字符串Response即可。代码如下:
[u]复制代码[/u] 代码如下:
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页面中有很多方法,而在使用过程中往往仅需要调用其中的某一个方法,此处用反射选取调用方法。 反射过程中使用的常量:
[u]复制代码[/u] 代码如下:
private const string PAGE_PATH_INFO = "/AppDataInterface/ExamLogin.aspx";//页面 private const string ASSEMBLY_NAME = "OSCEWEB";//程序集 private const string CLASS_NAME = "OSCEWEB.AppDataInterface.ExamLogin";//类名
重写OnInit方法:
[u]复制代码[/u] 代码如下:
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方法中添加:
[u]复制代码[/u] 代码如下:
if (Request.Params["PATH_INFO"].StartsWith(PAGE_PATH_INFO + "/")) {  Response.End(); }
3、新建一Winform项目,访问asp.net中数据接口 发布asp.net项目,网址:http://192.168.4.22:8005 1)无需向数据接口传递数据:
[u]复制代码[/u] 代码如下:
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方式向数据接口传递数据,获取接口数据
[u]复制代码[/u] 代码如下:
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#程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部