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 ...
随机推荐
- redux在react项目中的应用
今天想跟大家分享一下redux在react项目中的简单使用 1 1.redux使用相关的安装 yarn add redux yarn add react-redux(连接react和redux) 2. ...
- 关于obj文件的理解
编译器先编译.cpp为obj文件,看看文件内有没有冲突,然后再进行链接,链接头文件引入的lib库等等,然后就生成exe文件了,下面这个图说的很好:
- maven 项目在 tomcat 中启动报错:Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
问题原因: 在下载 maven 依赖包的时候出现某种原因导致下载的依赖包出现损坏,jvm 和 maven 不能正常识别,从而导致出现该问题. 解决办法: 在 maven 仓库中搜索: in-progr ...
- Grep- Linux必学的60个命令
1.作用 grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出.grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所 ...
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
在第二十三节,我们使用CollectionView实现了对于绑定数据的导航,除导航功能外,还可以通过CollectionView对数据进行类似于DataView的排序.筛选等功能. 一.数据的排序: ...
- 全栈之路-微信小程序-架构总览
第一阶段是用来学习小程序开发的,这个就相当于PC端的网站吧,只不过现在依靠微信强大的流量来将业务搬移到小程序中,对于企业来说,这是一种很好的发展方向,既减少了开发成本,又减少了推广成本,小程序是很被人 ...
- [HEOI2016/TJOI2016]排序 线段树+二分
[HEOI2016/TJOI2016]排序 内存限制:256 MiB 时间限制:6000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 在2016年,佳媛姐姐喜欢上了数字序列.因而 ...
- 20191005 - New Beginning
真·反思 Before 发现$T1$是约瑟夫,$T2$不清楚,$T3$是算法进阶上的$LCIS$ During得&失 做的不错的地方: 多少想了T1的优化(最后没打完). T3的暴力写得很快也 ...
- Boost test vs2013 fatal error C1001
Boost test vs2013 fatal error C1001 Boost test库提供了一个用于单元测试的基于命令行界面的测试套件UTF:Unit Test Framework,具有单元测 ...
- [群晖] DSM6.2用winscp通过root权限登录
http://www.nas1.cn/thread-86048-1-1.html 以前DSM6.0的时候可以通过改root密码的方式,来通过winscp来登录nas,这样可以获得最高权限可以任意修改文 ...