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编写的服务时,会发生无法访问的情况. 重现方式 使用模 ...
随机推荐
- input限制数字输入
onkeyup="this.value=this.value.replace(/\D/g,'')"
- Ubuntu 16.04安装Git及GUI客户端
1.通过APT源安装Git命令行工具 这里不建议通过源码进行安装,增加复杂程度,且最新版本的Git在各个方面都会修复,不至于出现不能用的状态. sudo add-apt-repository ppa: ...
- php使用数组语法访问对象
有一个对象,不过希望能用数组的语法来读写数据,可以使用 实现SPL的ArrayAccess接口来解决. 使用场景:加载配置文件类.larvel框架加载配置文件就这利用数组来操作对象. 数组式访问Obj ...
- js 获取高度
网页可见区域宽 :document.body.clientWidth; 网页可见区域高:document.body.clientHeight; 网页可见区域高:document.body.offs ...
- dddddddddddddddddd
PacificA: Replication in log-based distributed storage systemshttp://research.microsoft.com:8082/pub ...
- 03 Maven 坐标与依赖
Maven 坐标与依赖 Maven 的一大功能是管理项目依赖.为了能自动化地解析任何一个 Java 构件, Maven 就必须将它们唯一标识,这就依赖管理的底层基础 一一 坐标.本章将详细分析 Mav ...
- java日期正则表达式精准校验
function checkDate(obj) { var date=obj.value; var re = new RegExp("(([0-9]{3}[1-9]| ...
- ubuntu 'yuan' update
# tsinghua university deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiv ...
- 2018.09.14 codeforces364D(随机化算法)
传送门 根据国家集训队2014论文集中胡泽聪的随机化算法可以通过这道题. 对于每个数,它有12" role="presentation" style="posi ...
- 2018.09.09 bzoj3505: [Cqoi2014]数三角形(容斥原理+简单计数)
传送门 正难则反. 可以直接把问题转化成求出三点共线的情况数量. 如果同在一排或一列显然可以直接算,关键是如何求出斜着的. 我们知道,对于一个整点矩形. 如果长为x,宽为y,那么这个矩形任意一条对角线 ...