c#后台调用API
前两周赶上项目第一个版本上线,着实忙了一把,毕竟只有两个人负责。如今已完结,总算喘了一口气,现在任务就是写API、测API,许久之前写过JS前台调用 项目API,也写过后台调用开放的手机号归属地查询,这些仅仅是自己闲暇之余写的 最为简单的例子,算是过家家的级别吧,现在就项目各模块测试API时 注意的点和出现的问题进行记录。
套路就是
1.新建一个API 项目,引用web项目的dll
2.在API项目中 将要测试的方法全部写好(new对象,然后引用dll中方法)
3.再新建一测试项目,根据url 拼接参数(API不认参数名和Action名,只识别参数个数)
比如: 测试 web项目中的 A方法时
① API项目中
//调用A方法
public IList<Student> Get(string conn, string Id, string level)
{
StudentBIZ biz = new StudentBIZ(conn, Id,level);
return biz.A();
}
②APITest项目中
string url = "API网址" + "A方法控制器名";
string AllUrl = string.Format("{0}?conn={1}&Id={2}&level={3}", url, conn, Id, level);
var b = WebRequestHelper.GetData<Student>(AllUrl);
return View(b);
这里 WebRequestHelper 作为 APITest 调用WebAPI 方法的帮助类,针对需要的返回类型去编写对应的访问方法,一般都会有Post、Put、Get、Delete 等请求方式,网上也有很完善的Code,不想自己写,可以直接贴过来自己用。不够用的时候自己在写对应的访问方法,如:
private static string PostWebApi(string url)
{
var request = HttpWebRequest.Create(url) as HttpWebRequest;
request.Method = "Post";
request.ContentType = "application/json; charset=utf-8";
request.Timeout = ;
var app = request.Address.Segments[];
string result = "";
request.ContentLength = ;
// 取得回應資料
using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
{
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
result = sr.ReadToEnd();
}
}
return result;
}
红色部分是获取API项目中 对应方法的回调内容,如果你在API项目中对应的方法下打断点,调试到这里的时候就会跳转过去,有时候你想跑去DLL里面的方法中,只要将其web项目打开,不需要运行,直接在调的底层方法下打断点,程序即可跑进去。比如①中的 biz.A() 方法。
调试的时候有时候会抛出不少异常,最常见的就是 405方法不被允许;其实就是请求方式不对,put\post\get 等等的先屡清楚,然后就是发布服务器,很多时候,本地往往是正常的,一发布到服务器上就尴尬了,各种点击没有反应、或者404,一开始是比较头疼,后来做多了好耐晓得了一些套路,或者说是需要注意的点
1. 404的错误,找不到是资源,就是路径的问题,服务器上发布站点、应用程式的时候对路径的要求也不一样,在发布程式的时候,URL前面会带有一个本地文件夹的名字,这里一定好区分好
2. 点击按钮无响应, 这个肯定是程序出了问题,平时在本地写代码的时候,就随手返回一个bool值到前台,然后弹出成功/失败,但是部署到服务器上就不同了,一旦出了问题,也不能调试,只能靠猜。。。(笑),当然不是,主要方法下都会记录日志,看日志找错误。此外,对于网页的调试时,还可以新建一个实体类,写上bool、string 两个成员字段,返回前台的时候,直接返回此对象,string记录异常信息,正常则不记录,前天在解析此对象,弹出操作结果(若失败,则会提示失败原因)
c#后台调用API的更多相关文章
- ASP.NET后台调用API方法
/// <summary> /// 调用API POST请求与获取结果 /// </summary> ///URL 与 JSON串 public static string H ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- 获取ip ,百度地图坐标点 和 在 后台调用 url()
protected void getip() { string ips = HttpContext.Current.Request.UserHostA ...
- 小白的springboot之路(十一)、构建后台RESTfull API
0.前言 开发系统中,前后端分离,后端一般返回RESTfull API,前端调用API构建UI,彼此分离.互相完全独立: 后台API中,我们一般返回结果码.提示信息.数据三部分内容,如图: 我们今天 ...
- Apsara Clouder专项技能认证:实现调用API接口
一.API 简介 1.API 的概念 API(Application Programming Interface应用程序编程接口)是一些预定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访 ...
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——实践篇(二)
在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP—— ...
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——理论篇
工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...
- WebService – 3.后台调用WebService,根级别上的数据无效
1.因为我的webservice返回的是json, 2.ajax传递跨域不安全, 3.contentType: "application/json; charset=utf-8", ...
- C#中调用API
介绍 API( Application Programming Interface ),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能 ...
随机推荐
- [].slice.call(arguments,1)
[转] 前言 今天偶然翻资料看到一个叫做软绑定的函数,用来确定this的; 原代码 if(!Function.prototype.softBind){ Function.prototype.softB ...
- vb代码之-------当窗体BorderStyle属性为0时,添加窗口预览到任务栏
入吾QQ群183435019 (学习 交流+唠嗑) 有很多时候,我们为了美观,将会自己画一个标题栏,这时候我们会把原来的标题栏取消掉,最简单的方法是吧窗体的BorderStyle设置成为0, 然后自己 ...
- linux基础命令学习总结
本附录([美]哈恩:<Unix&Linux大学教程>附录B,张杰良译,清华大学出版社,2010年)摘要描述了书中所涉及的143个Unix使命,并且按照命令的类别进行排列.在每个名称 ...
- WebService服务(转)
一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多吹嘘和做广告的成分.但是不得不承认的是Web ...
- 存储库-MongoDB简单的操作
简介: MongoDB是一款强大.灵活.且易于扩展的通用型数据库 1.易用性 MongoDB是一个面向文档的数据库,而不是关系型的数据库: 不采用关系型主要是为了可扩展性 2.易扩展性 存储在Mong ...
- deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I 听课笔记
这门课是讲一些分析机器学习问题的方法,如何更快速高效的优化机器学习系统,以及NG自己的工程经验和教训. 1. 正交化(Othogonalization) 设计机器学习系统时需要面对一个问题是:可以尝试 ...
- CTSC2017 && APIO2017 && THUSC2017 游记
一去北京就是近20天,还是回来写写游记吧. 5.6 坐飞机到天津转动车到北京. 5.7 在天坛公园逛了一圈就去报到了. 下午试机,好像没发生什么. 5.8 CTSC一试 T1签到,开个桶打个标记就好了 ...
- [51nod1474]宝藏图
有n堆宝藏,每一堆宝藏有一个挖掘所需要的时间ti,有一个价值qi. 现在是做一个宝藏图.这个宝藏图是这样的,宝藏图的形状是一棵二叉树,二叉树刚好有k个叶子结点,从n堆宝藏中选k堆放到二叉树的叶子结点上 ...
- 关于win10系统安装VMware12Pro后,win10系统的 控制面板\网络和 Internet\网络连接\更改适配器选项卡中 没有虚拟网卡VMnet1和VMnet8图标,该如何把他们显示出来呢?
安装VMware12Pro后,PC主机通过命令行:ipconfig/all ,查看发现没有VMnet1和VMnet8. 然后我首先尝试打开VMware12Pro的虚拟网络编辑器: 然后先点击" ...
- 电脑打不开网页,使用dns优化下就可以了。
通过电脑管家dns优化下就可以了.启用114DNS