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编写的服务时,会发生无法访问的情况. 重现方式 使用模 ...
随机推荐
- 38. Count and Say (String; DP)
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- Hibernate查询方式(补)
-----------------siwuxie095 Hibernate 查询方式 1.对象导航查询 根据已经加载的对 ...
- 【趣】Python获取变量的变量名
两种不完美的方式: 用locals,globals 用locals获取变量列表,再遍历比较对象. def namestr(obj): ns = globals() return [name for n ...
- AndroidDriver原理初步--Android自动化测试学习历程
章节:自动化基础篇——AndroidDriver原理初步(第六讲) 主要讲解内容及笔记: 一.AndroidDriver核心原理 对上图的解析: PC端的端口通过adb,将android版的Remot ...
- oracle pl/sql程序
简单的pl/sql程序 declare begin dbms_output.put_line('hello world'); end; 什么是PL/SQL? pl/sql(Procedure lang ...
- Mysql、Oracle、SqlServer的JDBC连接实现和对比(提供驱动包)
首先,我们需要准备数据库连接所需的jar包.目前mysql的驱动包可能比较好找,但是oracle和sqlserver的有很多,要找到能用的要花一点点心思,这里直接把下载地址和版本发送出来. Mysql ...
- PythonQt进阶
本文介绍PythonQt和qt之间是如何进行交互操作的 例子是以Qt的TreeView为实例进行介绍 在该例子中,TreeItem不是从Qt中进行的继承,这样的类如果要和Python进行交互,首先需要 ...
- linux下nginx tomcat集群
集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器. 这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程 ...
- makefile all
all:udps udpc udps:udpserv.c gcc -Wall -o udps udpserv.cudpc:udpclient.c gcc -Wall -o udpc udp ...
- process_创建进程
import multiprocessingimport time#方式一def worker(interval): n = 5 while n > 0: print("The tim ...