WebApi实现代理Http请求

简介: WebApi实现代理Http请求

h5调用第三方api时候经常遇到不允许跨域的问题,用webapi实现一个代理http接口,方便进行跨域请求。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Web.Http;
using YFAPICommon.Models;
namespace YFAPICommon.Controllers
{
    public class HttpInput
    {
        public string url { set; get; }
        public Dictionary<string,object> param { set; get; }
    }
    public class HttpProxyController : ApiController
    {
        public object doPost(HttpInput input)
        {
            if (string.IsNullOrWhiteSpace(input.url))
                return ReturnNode.ReturnError("url不能为空");
            if (input.param == null)
                input.param = new Dictionary<string, object>();
            string result = Post(input.url,input.param);
            if (result != null)
            {
                try
                {
                    JObject obj = JsonConvert.DeserializeObject<JObject>(result);
                    return obj;
                }
                catch (Exception ex)
                {
                }
            }
            return result;
        }
        public object doGet(HttpInput input)
        {
            if (string.IsNullOrWhiteSpace(input.url))
                return ReturnNode.ReturnError("url不能为空");
            if (input.param == null)
                input.param = new Dictionary<string, object>();
            string result = Get(input.url);
            if (result != null)
            {
                try
                {
                    JObject obj = JsonConvert.DeserializeObject<JObject>(result);
                    return obj;
                }
                catch (Exception ex)
                {
                }
            }
            return result;
        }
        private static string Post(string url, Dictionary<string, object> param)
        {
            using (HttpClient client = new HttpClient())
            {
                //请求超时
                //client.Timeout = new TimeSpan(5000);
                var httpContent = new StringContent(JsonConvert.SerializeObject(param));
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                var response = client.PostAsync(url, httpContent).Result;
                var responseValue = response.Content.ReadAsStringAsync().Result;
                if (response.StatusCode == System.Net.HttpStatusCode.OK)
                {
                    return responseValue;
                }
                return null;
            }
        }
        private static string Get(string url)
        {
            var request = (HttpWebRequest)WebRequest.Create(url);
            var response = (HttpWebResponse)request.GetResponse();
            var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
            if (response.StatusCode == System.Net.HttpStatusCode.OK)
            {
                return responseString;
            }
            return null;
        }
    }
}
相关文章
|
19天前
|
缓存 前端开发 API
|
24天前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
7天前
|
JSON API 数据格式
Python中获取HTTP请求响应体的详解
本文介绍了如何使用Python的`requests`和`urllib`库发送HTTP请求并处理响应体。`requests`库简化了HTTP请求过程,适合快速开发;`urllib`库则更为底层,适用于性能要求较高的场景。文章详细演示了发送GET请求、处理JSON响应等常见操作。
|
6天前
|
安全 API 网络安全
使用OkHttp进行HTTPS请求的Kotlin实现
使用OkHttp进行HTTPS请求的Kotlin实现
|
13天前
|
前端开发 JavaScript Java
如何捕获和处理HTTP GET请求的异常
如何捕获和处理HTTP GET请求的异常
|
15天前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
15天前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
15天前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
18天前
|
安全 API 数据安全/隐私保护
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
|
23天前
|
存储 安全 网络协议
HTTP 请求方法
【10月更文挑战第22天】HTTP 请求方法
33 2

热门文章

最新文章