ABP框架中微服务跨域调用其它服务接口
- AjaxResponse为ABP自动包装的JSON格式
- /// <summary>
- /// 通过地址和参数取得返回OutPut数据
- /// </summary>
- /// <param name="url"></param>
- /// <param name="input">请求参数</param>
- /// <returns></returns>
- public static OutPut ResultGet(string url, object input = null)
- {
- var data = Get(url, input);
- var response = data.JsonToObject<AjaxResponse>();
- if (response.Success == false)
- {
- var str = data.JsonToObject<AjaxResponse>();
- throw new Exception(str.Error.Message);
- }
- return response.Result.ToString().JsonToObject<OutPut>();
- }
- /// <summary>
- /// 通过地址和参数取得返回OutPut数据
- /// </summary>
- /// <param name="url"></param>
- /// <param name="input">请求参数</param>
- /// <returns></returns>
- public static OutPut ResultPost(string url, object input = null)
- {
- var data = Post(url, input);
- var response = data.JsonToObject<AjaxResponse>();
- if (response.Success == false)
- {
- var str = data.JsonToObject<AjaxResponse>();
- throw new Exception(str.Error.Message);
- }
- return response.Result.ToString().JsonToObject<OutPut>();
- }
- /// <summary>
- ///通过地址和我反序列后的JSON取得返回GeneralOutPut数据
- /// </summary>
- /// <param name="url">请求地址</param>
- /// <param name="input">请求参数</param>
- /// <returns>请求返回的结果</returns>
- private static string Get(string url, object input = null)
- {
- var properties = input?.GetType().GetProperties();
- var parm = string.Empty;
- foreach (var propertie in properties)
- {
- var name = propertie.Name;
- var value = input.GetType().GetProperty(name).GetValue(input);//直接根据属性的名字获取其值
- parm += $"&{ name}={value}";
- }
- parm = parm.Trim('&');
- url = $"{url}?{parm}";
- // Prepare web request...
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- request.Method = "GET";
- request.ContentType = "application/json";
- return HttpRequest(request);
- }
- /// <summary>
- /// 指定Post地址使用Get 方式获取全部字符串
- /// </summary>
- /// <param name="url">请求后台地址</param>
- /// <returns></returns>
- public static string Post(string url, object input)
- {
- HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
- req.Method = "POST";
- req.ContentType = "application/x-www-form-urlencoded";
- #region 添加Post 参数
- var parm = Serialization.JsonSerialize(input);
- byte[] data = Encoding.UTF8.GetBytes(parm);
- req.ContentLength = data.Length;
- using (Stream reqStream = req.GetRequestStream())
- {
- reqStream.Write(data, , data.Length);
- reqStream.Close();
- }
- #endregion
- return HttpRequest(req);
- }
- /// <summary>
- /// 请求的主体部分(由此完成请求并返回请求结果)
- /// </summary>
- /// <param name="request">请求的对象</param>
- /// <returns>请求返回结果</returns>
- private static string HttpRequest(HttpWebRequest request)
- {
- HttpWebResponse response = null;
- try
- {
- response = (HttpWebResponse)request.GetResponse();
- }
- catch (WebException ex)
- {
- response = (HttpWebResponse)ex.Response;
- }
- string result = string.Empty;
- using (StreamReader reader = new StreamReader(response.GetResponseStream()))
- {
- result = reader.ReadToEnd();
- }
- return result;
- }
- /// <summary>
- /// URL拼写完整性检查
- /// </summary>
- /// <param name="url">待检查的URL</param>
- private static string UrlCheck(string url)
- {
- if (!url.StartsWith("http://") && !url.StartsWith("https://"))
- url = "http://" + url;
- return url;
- }
ABP框架中微服务跨域调用其它服务接口的更多相关文章
- 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法
关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace Wcf ...
- jquery中的jsonp跨域调用
jquery jsonp跨域调用接口
- jquery中的jsonp跨域调用(接口)
jquery jsonp跨域调用接口
- PHP中JSON的跨域调用
主调文件index.html <script type="text/javascript"> function getProfile(str) { var arr = ...
- vue.js vue-cli 中解决 axios 跨域调用的问题
修改 /config/index.js 文件如下: proxyTable: { '/api': { target: 'http://chifan.local', changeOrigin: true, ...
- jquery跨域调用wcf
使用jquery跨域调用wcf服务的时候会报如下错误 $.ajax({ url: 'http://localhost:28207/Service1.svc/GetData', method: 'get ...
- AJAX跨域调用ASP.NET MVC或者WebAPI服务的解决方案
问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模板创建一个最简单的ASP.NET Web ...
- Ajax跨域访问wcf服务中所遇到的问题总结。
工具说明:vs2012,sql server 2008R2 1.首先,通过vs2012建立一个wcf服务项目,建立好之后.再新开一个vs2012 建立web项目,通过jQuery的ajax方法访问服务 ...
- 关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案
作者:陈希章 时间:2014-7-3 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 使用模 ...
随机推荐
- Treasures and Vikings(两次搜索)
Treasures and Vikings https://www.luogu.org/problemnew/show/P4668 题意翻译 你有一张藏宝图,藏宝图可视为 N×MN×M 的网格.每个格 ...
- JdbcTemplate实现CRUD操作
------------------siwuxie095 JdbcTemplate 实现 CRUD 操作 1.J ...
- 【校招面试 之 C/C++】第28题 C++ 内存泄漏的检查
1.memwatch的使用 (1)首先去官网上下载源码: http://www.linkdata.se/sourcecode/memwatch/ 解压得到memwatch.c以及memwatch.h两 ...
- Django的admin介绍
我们看到我们创建一个默认的django的项目,他在project的urls有一个admin的url的路径 我们访问这个路径,他是一个登陆框,需要输入用户名和密码 我们就需要创建这个用户名和密码,如果你 ...
- swift UICollectionView使用
方法1:创建 的时候注册 layout /// 时间view private lazy var timeCollectionV: UICollectionView = { 1.直接注册 并设置好 UI ...
- Swift4 - 动态计算UITableView中tableHeaderView的高度 - 获取子控件高度和宽度
核心 : /// 获取 子控件高度 func sizeHeaderToFit(view:UIView) { view.setNeedsLayout() view.layoutIfNeeded() le ...
- jdeveloper基础教程(中文版)
jdeveloper基础教程(中文版) 程序员的基础教程:菜鸟程序员
- VC2008 类型重定义的问题
Q: 比如"a.h"里定义了类a,类a所有函数的实现都放在"a.cpp"里.然后"b.h"和"c.h"都需要用到类a,所 ...
- Linux下搭建gtk+2.0开发环境
1.执行如下命令,检查系统是否已安装gtk+ pkg-config --list-all |grep gtk 若命令提示如下,则系统已安装gtk+,否则未安装. 2.若未安装,则执行如下命令进行安装 ...
- iOS.AVCaptureSession
AVCaptureSession的使用容易freeze的问题 1. http://stackoverflow.com/questions/11905505/avcapturesession-stop- ...