1. AjaxResponseABP自动包装的JSON格式
  1. /// <summary>
  2. /// 通过地址和参数取得返回OutPut数据
  3. /// </summary>
  4. /// <param name="url"></param>
  5. /// <param name="input">请求参数</param>
  6. /// <returns></returns>
  7. public static OutPut ResultGet(string url, object input = null)
  8. {
  9. var data = Get(url, input);
  10. var response = data.JsonToObject<AjaxResponse>();
  11.  
  12. if (response.Success == false)
  13. {
  14. var str = data.JsonToObject<AjaxResponse>();
  15. throw new Exception(str.Error.Message);
  16. }
  17. return response.Result.ToString().JsonToObject<OutPut>();
  18. }
  19.  
  20. /// <summary>
  21. /// 通过地址和参数取得返回OutPut数据
  22. /// </summary>
  23. /// <param name="url"></param>
  24. /// <param name="input">请求参数</param>
  25. /// <returns></returns>
  26. public static OutPut ResultPost(string url, object input = null)
  27. {
  28. var data = Post(url, input);
  29. var response = data.JsonToObject<AjaxResponse>();
  30.  
  31. if (response.Success == false)
  32. {
  33. var str = data.JsonToObject<AjaxResponse>();
  34. throw new Exception(str.Error.Message);
  35. }
  36. return response.Result.ToString().JsonToObject<OutPut>();
  37. }
  38.  
  39. /// <summary>
  40. ///通过地址和我反序列后的JSON取得返回GeneralOutPut数据
  41. /// </summary>
  42. /// <param name="url">请求地址</param>
  43. /// <param name="input">请求参数</param>
  44. /// <returns>请求返回的结果</returns>
  45. private static string Get(string url, object input = null)
  46. {
  47. var properties = input?.GetType().GetProperties();
  48. var parm = string.Empty;
  49. foreach (var propertie in properties)
  50. {
  51. var name = propertie.Name;
  52. var value = input.GetType().GetProperty(name).GetValue(input);//直接根据属性的名字获取其值
  53.  
  54. parm += $"&{ name}={value}";
  55. }
  56.  
  57. parm = parm.Trim('&');
  58. url = $"{url}?{parm}";
  59.  
  60. // Prepare web request...
  61. HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
  62. request.Method = "GET";
  63. request.ContentType = "application/json";
  64.  
  65. return HttpRequest(request);
  66. }
  67.  
  68. /// <summary>
  69. /// 指定Post地址使用Get 方式获取全部字符串
  70. /// </summary>
  71. /// <param name="url">请求后台地址</param>
  72. /// <returns></returns>
  73. public static string Post(string url, object input)
  74. {
  75. HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
  76. req.Method = "POST";
  77. req.ContentType = "application/x-www-form-urlencoded";
  78.  
  79. #region 添加Post 参数
  80. var parm = Serialization.JsonSerialize(input);
  81. byte[] data = Encoding.UTF8.GetBytes(parm);
  82. req.ContentLength = data.Length;
  83. using (Stream reqStream = req.GetRequestStream())
  84. {
  85. reqStream.Write(data, , data.Length);
  86. reqStream.Close();
  87. }
  88. #endregion
  89.  
  90. return HttpRequest(req);
  91. }
  92.  
  93. /// <summary>
  94. /// 请求的主体部分(由此完成请求并返回请求结果)
  95. /// </summary>
  96. /// <param name="request">请求的对象</param>
  97. /// <returns>请求返回结果</returns>
  98. private static string HttpRequest(HttpWebRequest request)
  99. {
  100. HttpWebResponse response = null;
  101.  
  102. try
  103. {
  104. response = (HttpWebResponse)request.GetResponse();
  105. }
  106. catch (WebException ex)
  107. {
  108. response = (HttpWebResponse)ex.Response;
  109. }
  110.  
  111. string result = string.Empty;
  112. using (StreamReader reader = new StreamReader(response.GetResponseStream()))
  113. {
  114. result = reader.ReadToEnd();
  115. }
  116.  
  117. return result;
  118. }
  119.  
  120. /// <summary>
  121. /// URL拼写完整性检查
  122. /// </summary>
  123. /// <param name="url">待检查的URL</param>
  124. private static string UrlCheck(string url)
  125. {
  126. if (!url.StartsWith("http://") && !url.StartsWith("https://"))
  127. url = "http://" + url;
  128.  
  129. return url;
  130. }

ABP框架中微服务跨域调用其它服务接口的更多相关文章

  1. 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法

    关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace Wcf ...

  2. jquery中的jsonp跨域调用

                                                    jquery jsonp跨域调用接口

  3. jquery中的jsonp跨域调用(接口)

                                                                           jquery jsonp跨域调用接口

  4. PHP中JSON的跨域调用

    主调文件index.html <script type="text/javascript"> function getProfile(str) { var arr = ...

  5. vue.js vue-cli 中解决 axios 跨域调用的问题

    修改 /config/index.js 文件如下: proxyTable: { '/api': { target: 'http://chifan.local', changeOrigin: true, ...

  6. jquery跨域调用wcf

    使用jquery跨域调用wcf服务的时候会报如下错误 $.ajax({ url: 'http://localhost:28207/Service1.svc/GetData', method: 'get ...

  7. AJAX跨域调用ASP.NET MVC或者WebAPI服务的解决方案

    问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web ...

  8. Ajax跨域访问wcf服务中所遇到的问题总结。

    工具说明:vs2012,sql server 2008R2 1.首先,通过vs2012建立一个wcf服务项目,建立好之后.再新开一个vs2012 建立web项目,通过jQuery的ajax方法访问服务 ...

  9. 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案

      作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模 ...

随机推荐

  1. Treasures and Vikings(两次搜索)

    Treasures and Vikings https://www.luogu.org/problemnew/show/P4668 题意翻译 你有一张藏宝图,藏宝图可视为 N×MN×M 的网格.每个格 ...

  2. JdbcTemplate实现CRUD操作

    ------------------siwuxie095                                     JdbcTemplate 实现 CRUD 操作         1.J ...

  3. 【校招面试 之 C/C++】第28题 C++ 内存泄漏的检查

    1.memwatch的使用 (1)首先去官网上下载源码: http://www.linkdata.se/sourcecode/memwatch/ 解压得到memwatch.c以及memwatch.h两 ...

  4. Django的admin介绍

    我们看到我们创建一个默认的django的项目,他在project的urls有一个admin的url的路径 我们访问这个路径,他是一个登陆框,需要输入用户名和密码 我们就需要创建这个用户名和密码,如果你 ...

  5. swift UICollectionView使用

    方法1:创建 的时候注册 layout /// 时间view private lazy var timeCollectionV: UICollectionView = { 1.直接注册 并设置好 UI ...

  6. Swift4 - 动态计算UITableView中tableHeaderView的高度 - 获取子控件高度和宽度

    核心 : /// 获取 子控件高度 func sizeHeaderToFit(view:UIView) { view.setNeedsLayout() view.layoutIfNeeded() le ...

  7. jdeveloper基础教程(中文版)

    jdeveloper基础教程(中文版) 程序员的基础教程:菜鸟程序员

  8. VC2008 类型重定义的问题

    Q: 比如"a.h"里定义了类a,类a所有函数的实现都放在"a.cpp"里.然后"b.h"和"c.h"都需要用到类a,所 ...

  9. Linux下搭建gtk+2.0开发环境

    1.执行如下命令,检查系统是否已安装gtk+ pkg-config --list-all |grep gtk 若命令提示如下,则系统已安装gtk+,否则未安装. 2.若未安装,则执行如下命令进行安装 ...

  10. iOS.AVCaptureSession

    AVCaptureSession的使用容易freeze的问题 1. http://stackoverflow.com/questions/11905505/avcapturesession-stop- ...