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框架中微服务跨域调用其它服务接口的更多相关文章

  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. tf.equal()

    equal( x, y, name=None ) 对输入的 x 和 y 两个 Tensor 逐元素(element-wise)做 (x == y) 逻辑比较,返回 bool 类型的 Tensor. 参 ...

  2. fieldOfView

    fieldOfView 属性 fieldOfView:Number 语言版本:  ActionScript 3.0 运行时版本:  Flash Player 10, AIR 1.5 为三维视野指定一个 ...

  3. [leetcode]124. Binary Tree Maximum Path Sum二叉树最大路径和

    Given a non-empty binary tree, find the maximum path sum. For this problem, a path is defined as any ...

  4. MVC FormCollection 无法获取值的问题

     把action定义为[HttpPost],并且ajax.beginform中ajaxoption中定义为Post,在提交表单时就可以获取FormCollection的值了.httpGet或者后台不定 ...

  5. html菜单和课程表

    菜单: <html> <head> <meta charset="utf-8"> <title>菜单练习</title> ...

  6. 有关gitlab的神秘操作.....version&&domain设置...

    在使用gitlab的时候,如果服务器IP变动,之前的domain写入了配置文件了,如下路径: [root@gitlab-server ~]# vim /var/opt/gitlab/gitlab-ra ...

  7. [Meteor] meteor project structure

  8. JVM 系列 ClassLoader

    JVM 系列()ClassLoader 在前面一节中,主要介绍了 Class 的装载过程,Class 的装载大体上可以分为加载类.连接类和初始化 3 个阶段.本小节将主要介绍绍 Java 语言中的 C ...

  9. 浅析10种常见的黑帽seo手法

    虽然博主并不认同黑帽seo手法,但是一些常见的黑帽手法还是需要了解的,增加自己对黑帽的认知,也可以在自己优化网站时适时的规避开这些黑帽手法,从而避免自己的网站被搜索引擎惩罚.好了,话不多说,下面进入今 ...

  10. 详解Windows Service Wrapper(winsw.exe)及应用场景

    winsw.exe可以帮助nginx作为windows服务自启动,不需要每次都输入命令,很方便,使用到目前为止这种做法的效果很完美.你得到了 Windows 服务的支持,而且在服务重启时没有遗留孤立的 ...