请求后台,有很多方式,常见的有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# 请求在线接口数据的更多相关文章

  1. react中跨域请求天气预报接口数据

    背景故事:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能, 如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上 ...

  2. 使用js+Ajax请求API接口数据-带请求头方式

    C# http请求带请求头部分 先上代码: <script type="text/javascript"> function zLoginCheck() { var A ...

  3. 【11】ajax请求后台接口数据与返回值处理js写法

    $.ajax({ url: "/test.php",//后台提供的接口 type: "post",   //请求方式是post data:{"type ...

  4. VUE 使用axios请求第三方接口数据跨域问题解决

    VUE是基于node.js,所以解决跨域问题,设置一下反向代理即可. 我这里要调用的第三方接口地址为 http://v.juhe.cn/toutiao/index?type=top&key=1 ...

  5. 使用quartz.jar 、quartz-jobs.jar 实现定时任务 。实现 定时采集 接口数据

    前言 定时任务管理,在java中有很多种的方式 ,有java自带的注解方式@Scheduled  等 ,现在我要说的是一种也是使用比较广泛的一种quartz管理 使用此类 需要的加jar包有 quar ...

  6. C# HTTP请求对外接口、第三方接口公用类

    /// <summary> /// 网络数据请求公共函数 /// </summary> public class HttpWebRequestCommon { #region ...

  7. java编程(2)——servlet和Ajax异步请求的接口编程(有调用数据库的数据)

    第一步: 1.为项目配置 Tomcat 为 server: 2.导入 mysql的jar包 到项目目录中: 第二步:编码 1.数据库连接类ConnectMysql.java代码: package co ...

  8. php curl请求和获取接口数据

    curl请求和获取接口数据 class ToolModel{ /** * [http 调用接口函数] * @Author GeorgeHao * @param string $url [接口地址] * ...

  9. iOS开发之线程组解决请求多个接口数据,完成后,再刷新界面

    1.多任务请求接口,完成后,在刷新数据,常用方法 2018年07月18日 16:34:38 hbblzjy 阅读数:1382 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...

随机推荐

  1. 《Dotnet9》建站-记录建站过程中使用的一些网址

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  2. 吃透Python上下文管理器

    什么是上下文管理器? 我们常见的with open操作文件,就是一个上下文管理器.如: with open(file, 'rb') as f: text = f.read() 那上下文管理器具体的定义 ...

  3. 基于windows server 2016和sqlserver 2016 AlwaysOn的群集配置

    文档:基于windows server 2016和sqlserver 2...链接:http://note.youdao.com/noteshare?id=4f07c1c3f7d0e32b7631d7 ...

  4. SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载)

    场景 SpringCloud学习之运行第一个Eureka程序: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/90611451 S ...

  5. 暴力破解( Hydra | Medusa)

    暴力破解 By : Mirror王宇阳 笔者告知 : 暴力破解的结果是运气和速度的结晶,开始暴力破解前烧一炷香也是必要的! 引用张炳帅的一句话:"你的运气和管理员的安全意识成正比" ...

  6. docker alphine 安装vim 等软件

    alphine 不带 yum,所以只能用apt-get 安装 apt-get update apt-get install vim apt-get install net-tools

  7. React每隔0.2s颜色变淡 之生命周期 ,componentDidMount表示组件已经挂载

    05案例 每隔0.2s颜色变淡 componentDidMount表示组件已经挂载,可以进行DOM操作 import React, { Component } from "react&quo ...

  8. Jenkins之自动部署、代码安全扫描、自动化接口测试

    搭建Jenkins wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.reporpm --i ...

  9. Java生鲜电商平台-统一格式返回的API架构设计与实战

    Java生鲜电商平台-统一格式返回的API架构设计与实战 说明:随着互联网各岗位精细化分工的普及,出现了很多的系统架构设计,比如常见的前后端分离架构,后端提供接口给前端,前端根据接口的数据进行渲染,大 ...

  10. C lang: VLA(variable-length array)

    Xx_VLA Introduction VLA:variable-length array,not variable array size,but variable arary dimensional ...