C# 请求在线接口数据
请求后台,有很多方式,常见的有WebRequest、HttpClient。以下mark一上~
WebRequest方式
1. Get
public static async Task<string> RequestDataAsync(string requestUrl)
{
WebRequest translationWebRequest = WebRequest.Create(requestUrl); var response = await translationWebRequest.GetResponseAsync(); using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException(),
Encoding.GetEncoding("utf-8")))
{
string result = reader.ReadToEnd();
var decodeResult = Unicode2String(result);
return decodeResult;
}
}
}
2. Post
/// <summary>
/// Post using WebRequest
/// </summary>
/// <param name="requestUrl"></param>
/// <param name="jsonData"></param>
/// <returns></returns>
public static async Task<string> PostDataAsync(string requestUrl,string jsonData)
{
WebRequest translationWebRequest = WebRequest.Create(requestUrl);
translationWebRequest.Method = "post";
translationWebRequest.ContentType = "application/json"; byte[] postdatabyte = Encoding.UTF8.GetBytes(jsonData);
translationWebRequest.ContentLength = postdatabyte.Length;
using (Stream postStream= translationWebRequest.GetRequestStream())
{
postStream.Write(postdatabyte, , postdatabyte.Length);
} var response = await translationWebRequest.GetResponseAsync(); using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream ?? throw new InvalidOperationException(),
Encoding.GetEncoding("utf-8")))
{
string result = reader.ReadToEnd();
var decodeResult = Unicode2String(result);
return decodeResult;
}
}
}
HttpClient方式
/// <summary>
/// Post using HttpClient
/// </summary>
/// <param name="requestUrl"></param>
/// <param name="jsonData"></param>
/// <returns></returns>
public static async Task<string> PostDataUsingHttpAsync(string requestUrl, string jsonData)
{
HttpContent httpContent = new StringContent(jsonData);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = httpClient.PostAsync(requestUrl, httpContent).Result;
if (response.IsSuccessStatusCode)
{
Task<string> t = response.Content.ReadAsStringAsync();
return t.Result;
}
return string.Empty;
}
拿走,不谢~
public class WebRequestBase
{
public static async Task<string> RequestDataAsync(string requestUrl)
{
WebRequest translationWebRequest = WebRequest.Create(requestUrl); var response = await translationWebRequest.GetResponseAsync(); using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream ?? throw new InvalidOperationException(),
Encoding.GetEncoding("utf-8")))
{
string result = reader.ReadToEnd();
var decodeResult = Unicode2String(result);
return decodeResult;
}
}
} /// <summary>
/// Post using WebRequest
/// </summary>
/// <param name="requestUrl"></param>
/// <param name="jsonData"></param>
/// <returns></returns>
public static async Task<string> PostDataAsync(string requestUrl, string jsonData)
{
WebRequest translationWebRequest = WebRequest.Create(requestUrl);
translationWebRequest.Method = "post";
translationWebRequest.ContentType = "application/json"; byte[] postdatabyte = Encoding.UTF8.GetBytes(jsonData);
translationWebRequest.ContentLength = postdatabyte.Length;
using (Stream postStream = translationWebRequest.GetRequestStream())
{
postStream.Write(postdatabyte, , postdatabyte.Length);
} var response = await translationWebRequest.GetResponseAsync(); using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(responseStream ?? throw new InvalidOperationException(),
Encoding.GetEncoding("utf-8")))
{
string result = reader.ReadToEnd();
var decodeResult = Unicode2String(result);
return decodeResult;
}
}
} /// <summary>
/// Post using HttpClient
/// </summary>
/// <param name="requestUrl"></param>
/// <param name="jsonData"></param>
/// <returns></returns>
public static async Task<string> PostDataUsingHttpAsync(string requestUrl, string jsonData)
{
HttpContent httpContent = new StringContent(jsonData);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpClient httpClient = new HttpClient();
HttpResponseMessage response = httpClient.PostAsync(requestUrl, httpContent).Result;
if (response.IsSuccessStatusCode)
{
Task<string> t = response.Content.ReadAsStringAsync();
return t.Result;
}
return string.Empty;
} /// <summary>
/// Unicode转字符串
/// </summary>
/// <param name="source">经过Unicode编码的字符串</param>
/// <returns>正常字符串</returns>
protected static string Unicode2String(string source)
{
return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace(
source, x => string.Empty + Convert.ToChar(Convert.ToUInt16(x.Result("$1"), )));
}
}
C# 请求在线接口数据的更多相关文章
- react中跨域请求天气预报接口数据
背景故事:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能, 如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上 ...
- 使用js+Ajax请求API接口数据-带请求头方式
C# http请求带请求头部分 先上代码: <script type="text/javascript"> function zLoginCheck() { var A ...
- 【11】ajax请求后台接口数据与返回值处理js写法
$.ajax({ url: "/test.php",//后台提供的接口 type: "post", //请求方式是post data:{"type ...
- VUE 使用axios请求第三方接口数据跨域问题解决
VUE是基于node.js,所以解决跨域问题,设置一下反向代理即可. 我这里要调用的第三方接口地址为 http://v.juhe.cn/toutiao/index?type=top&key=1 ...
- 使用quartz.jar 、quartz-jobs.jar 实现定时任务 。实现 定时采集 接口数据
前言 定时任务管理,在java中有很多种的方式 ,有java自带的注解方式@Scheduled 等 ,现在我要说的是一种也是使用比较广泛的一种quartz管理 使用此类 需要的加jar包有 quar ...
- C# HTTP请求对外接口、第三方接口公用类
/// <summary> /// 网络数据请求公共函数 /// </summary> public class HttpWebRequestCommon { #region ...
- java编程(2)——servlet和Ajax异步请求的接口编程(有调用数据库的数据)
第一步: 1.为项目配置 Tomcat 为 server: 2.导入 mysql的jar包 到项目目录中: 第二步:编码 1.数据库连接类ConnectMysql.java代码: package co ...
- php curl请求和获取接口数据
curl请求和获取接口数据 class ToolModel{ /** * [http 调用接口函数] * @Author GeorgeHao * @param string $url [接口地址] * ...
- iOS开发之线程组解决请求多个接口数据,完成后,再刷新界面
1.多任务请求接口,完成后,在刷新数据,常用方法 2018年07月18日 16:34:38 hbblzjy 阅读数:1382 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
随机推荐
- 《MySQL数据库》常用语法(二)
表关联关系: -- 内联接 SELECT * FROM m INNER JOIN n ON m.id = n.id; -- 左外联接 SELECT * FROM m LEFT JOIN n ON m. ...
- ES6对正则的改进(简要总结)
文章目录 正则的扩展 1. RegExp 构造函数 2. 字符串的正则方法 3. u 修饰符 4. y 修饰符 5. sticky 属性 6. flags 属性 7. s 修饰符:dotAll 模式 ...
- Python 浮点数的冷知识
本周的PyCoder's Weekly 上分享了一篇小文章,它里面提到的冷知识很有意思,我稍作补充,分享给大家. 它提到的部分问题,读者们可以先思考下: 若两个元组相等,即 a==b 且 a is b ...
- Tomcat系列(一)- 整体架构
整体架构 我们想要了解一个框架,首先要了解它是干什么的,Tomcat我们都知道,是用于处理连接过来的Socket请求的.那么Tomcat就会有两个功能: 对外处理连接,将收到的字节流转化为自己想要的R ...
- [译]C# 7系列,Part 1: Value Tuples 值元组
Mark Zhou写了很不错的一系列介绍C# 7的文章,虽然是2年多年前发布的,不过对于不熟悉C# 7特性的同学来说,仍然有很高的阅读价值. 原文:https://blogs.msdn.microso ...
- 在kubernetes 集群内访问k8s API服务
所有的 kubernetes 集群中账户分为两类,Kubernetes 管理的 serviceaccount(服务账户) 和 useraccount(用户账户).基于角色的访问控制(“RBAC”)使用 ...
- 做了这么久的程序员,你知道为什么会有 Lambda 表达式吗?
Java8 有一些新的特性,今天老顾给大家分享一下关于 Lambda 表达式的由来,一开始感觉 Lambda 可读性蛮差的,不知道 为什么 Java8 会出来这个表达式?既然大佬们推出来,肯定是有原因 ...
- 计算几何 val.3
目录 计算几何 val.3 自适应辛普森法 定积分 引入 辛普森公式 处理精度 代码实现 模板 时间复杂度 练习 闵可夫斯基和 Pick定理 结论 例题 后记 计算几何 val.3 自适应辛普森法 可 ...
- 【原创】flash中DataGrid数据列显示顺序的解决办法(非数据排序)
今天在用flash做一个简单的地图展示功能,需要把xml绑定到DataGrid,完成后,又仔细看了几遍,发现列的顺序不对,准确的说是不稳定,不固定,于是在网上查了一下,没有相关的内容.于是自己研究了一 ...
- PlayJava Day029
1.Java Reflection:Reflection(反射)是被视为动态语言的关键 反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息 并能直接操作任意对象的内部属性及 ...