Winform实现调用asp.net数据接口实例
本文实例讲述了Winform实现调用asp.net数据接口的方法,分享给大家供大家参考。具体实现方法如下:
一、问题:
最近一个WPF项目需要改写成android项目,思路是在asp.net项目中编写一个通用接口,便于其它平台下调用数据。刚接触到这些东西的时候完全是一头雾水,最根本的原因是不明白网站中的一个网页,为什么其它项目就可以访问它,并获取数据。带着疑问在asp.net项目编写一个简单的数据接口,并新建一个小winform项目直接访问它。
二、解决方法:
在asp.net项目中编写一个数据接口,使用反射辨别响应的方法;以及获取接口的数据。
这里仅仅是介绍如何使用它们,而不讲述使用它们的基本原理,感兴趣的朋友可以在查阅相关资料的基础上做进一步的研究。
三、主要内容:
1、asp.net项目下编写数据接口
2、使用反射分辨调用方法
3、新建一个winform项目测试接口的正确性
现分述如下:
1、在asp.net项目下编写一简单接口
编写一个方法,构造一个json字符串Response即可。代码如下:
{
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 ASSEMBLY_NAME = "OSCEWEB";//程序集
private const string CLASS_NAME = "OSCEWEB.AppDataInterface.ExamLogin";//类名
重写OnInit方法:
{
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方法中添加:
{
Response.End();
}
3、新建一Winform项目,访问asp.net中数据接口
发布asp.net项目,网址:http://192.168.4.22:8005
1)无需向数据接口传递数据:
{
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方式向数据接口传递数据,获取接口数据
{
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项目调用asp.net数据接口
最近一个WPF项目需要改写成android项目,思路是在asp.net项目中编写一个通用接口,便于其它平台下调用数据.刚接触到这些东西的时候完全是一头雾水,最根本的原因是不明白网站中的一个网页,为什么 ...
- 调用java rest ful 接口实例
HttpWebRequest request = WebRequest.Create("http://192.168.0.99:8080/wzh-webservice/rest/login? ...
- App开发:模拟服务器数据接口 - MockApi
为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...
- 使用Asp.net WebAPI 快速构建后台数据接口
现在的互联网应用,无论是web应用,还是移动APP,基本都需要实现非常多的数据访问接口.其实对一些轻应用来说Asp.net WebAPI是一个很快捷简单并且易于维护的后台数据接口框架.下面我们来快速构 ...
- Asp.Net Core基于JWT认证的数据接口网关Demo
近日,应一位朋友的邀请写了个Asp.Net Core基于JWT认证的数据接口网关Demo.朋友自己开了个公司,接到的一个升级项目,客户要求用Aps.Net Core做数据网关服务且基于JWT认证实现对 ...
- 关于C# winform怎么调用webapi来获取到json数据
C/S系统也可以和B/S系统一样实现“前后端分离”,那这样写winform就相当于纯粹的前端页面了,然后再单独部署一个webapi项目,通过api调用数据库进行数据的操作,有利于维护和数据安全性的提高 ...
- C#winForm调用WebService的远程接口
Web Service 的创建简单编码.发布和部署 上一篇详细概述了WebService的创建,编码,发布和部署,那么作为客户端的程序如何访问远程端的WebService 接下来看一下具体步骤: ...
- 开放数据接口 API 简介与使用场景、调用方法
此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...
- layui前端框架实例(修复官网数据接口异常问题)
layui前端框架实例,官网的实例会提示数据接口异常,已修复. 主要是修改数据表格,做一个可以用的实例,可以选中,编辑,删除等. gitee地址:https://gitee.com/pingg2019 ...
随机推荐
- java日志管理 - slf4j+log4j2
1 . 概述 1.1 日志框架实现 log4j是apache实现的一个开源日志组件: logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j ...
- Django项目: 4.用户登录登出功能
用户登录登出功能 一.功能需求分析 1. 登录退出功能分析 流程图 功能 登录页面 登录功能 退出功能 二.登录页面 1. 接口设计 接口说明 类目 说明 请求方法 GET url定义 /user/l ...
- python 中动态类的创建
参考 collections.namedtuple 的实现 链接: https://www.cnblogs.com/BeautifulWorld/p/11647198.html
- 对话框处理Enter,Esc键相应问题
在类视图里面选择你要实现的类,右键属性,在属性里面找到函数PreTranslateMessage,然后添加PreranslateMessage的消息函数,在PreTranslateMessage的消息 ...
- 如何做系列(4)-微博URL短网址生成算法原理(java版、php版实现实例)
短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代 ...
- 牛客NOIP暑期七天营-提高组6
目录 A-积木大赛 题目描述 link 题解 代码 B-破碎的序列 题目描述 link 题解 C-分班问题 题目描述 link 题解 比赛链接 官方题解 A-积木大赛 题目描述 link 题解 标签: ...
- IQueryable与IEnumerable使用区别
IQueryable会将查询语法转化为SQL查询语句,去数据库查询:IEnumerable则查询整张表,加载到内存中,再进行筛选. 所以,当查询的数据量较大的时候,则使用IQueryable.反之,数 ...
- 枚举进程,线程,堆 CreateToolhelp32Snapshot
Takes a snapshot of the processes and the heaps, modules, and threads used by the processes.对当前系统进行一 ...
- [Swoole系列入门教程 4] 定时器与心跳demo
- JZOJ5967 常数国
题目 像素有点低啊~ 算了凑合一下就好啦~ 题目大意 给你一个首尾相接的数列,每次对一个区间进行操作: 顺时针操作,如果当前值比vvv大,就交换.输出最后的vvv. 比赛思路 首先这题的时限这么仁慈, ...