HttpWebRequest request = WebRequest.CreateHttp(url);

            request.Method = "post";
request.Headers.Add(HttpRequestHeader.Authorization, "password mima");
request.Headers.Add("Cookie", "Cookie信息");
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"; //request.ContentType = "application/json";
//string data = JsonConvert.SerializeObject(new
//{
// Id = 1,
// Name = "中+文",//JSON格式传递参数,"+"号依然是"+"
// Age = 100
//}); request.ContentType = "application/x-www-form-urlencoded;charset=UTF-8"; // application/x-www-form-urlencoded 请求方式
// form 表示参数格式是 form 表单的格式
// urlencoded 表示该参数经过了 url 编码,注意:是经过了,而不是需要进行
string data = "id=1&name=中+文&age=100";
var bytes = Encoding.UTF8.GetBytes(data);
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, , bytes.Length);
requestStream.Close();
var response = request.GetResponse();
var sm = response.GetResponseStream();
var str = string.Empty;
using (StreamReader reader = new StreamReader(sm, Encoding.UTF8))
{
str = reader.ReadToEnd();
}
var person = JsonConvert.DeserializeObject<dynamic>(str);
Console.WriteLine(person.Id);//1 //服务器接收到请求后,识别出是"application/x-www-form-urlencoded"格式,
//便认为参数中的"中+文"是经过了 url 编码,
//因此,会自动 urldecode 解码
//所以 "+" 变成了 " ".
Console.WriteLine(person.Name);//中 文
Console.WriteLine(person.Age);//

补充:

如果API 返回的是 400,比如: return Request.CreateErrorResponse(HttpStatusCode.BadRequest, "没有文件耶,哥们!");

那么  var response = request.GetResponse(); 这句话直接会抛出异常

那么,我们如何能接收到返回的信息 : "没有文件耶,哥们!" 这句话呢?

答案是 try catch,代码如下:

            var result = string.Empty;
try
{
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
result = sr.ReadToEnd();
}
}
catch (WebException ex)
{
var errorSr =new StreamReader(ex.Response.GetResponseStream());
result = errorSr.ReadToEnd();
}
return result;

Web Api HttpWebRequest 请求 Api 及 异常处理的更多相关文章

  1. HttpWebRequest 请求 Api 及 异常处理

    HttpWebRequest request = WebRequest.CreateHttp(url); request.Method = "post"; request.Head ...

  2. 使用HttpWebRequest请求API接口以及其他网站资源

    很多时候,我们项目需要其他网站的资源,而这个被请求的网站可能属于你们自己开发管理的网站.也可能是公网上其他网站对外开发的API接口,比如说腾讯的微信公众平台的API接口.各大短信服务商的短信API接口 ...

  3. Socket.Io+HttpWebRequest 请求Api

    Socket 接收代码 <html> <head> <title>Socket Client Demo</title> <script src=& ...

  4. ASP.NET Web API 记录请求响应数据到日志的一个方法

    原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...

  5. SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)

    上个示例(SharePoint 2013 APP 开发示例 (五)跨域访问 Web Service (REST API))是基于JavaScript,运行在web browser内去访问REST AP ...

  6. Postman - 功能强大的 API 接口请求调试和管理工具

    Postman 是一款功能强大的的 Chrome 应用,可以便捷的调试接口.前端开发人员在开发或者调试 Web 程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的 Fi ...

  7. ASP.NET Core Web API 开发-RESTful API实现

    ASP.NET Core Web API 开发-RESTful API实现 REST 介绍: 符合REST设计风格的Web API称为RESTful API. 具象状态传输(英文:Representa ...

  8. chrome插件 postman插件 接口测试、API & HTTP 请求调试工具

    Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试. 它能够发送任何类型的HTTP requests (GET, HEAD, POST, PUT..) ...

  9. Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试

    Postman 是一个非常棒的Chrome扩展,提供功能强大的API & HTTP 请求调试   需要FQ才能安装,使用时应该不用FQ了,除非使用postman的历史记录功能:   非常棒的C ...

随机推荐

  1. [翻译]简单的实现一个Promise

    英文原文为:https://www.promisejs.org/implementing/ 1. 状态机 因为 promise 对象是一个状态机,所以我们首先应该定义将要用到的状态. var PEND ...

  2. scrapy 爬虫基础

    Scrapy是Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. 安装Scrapy的 ...

  3. wpf研究之道——自定义Button控件

    我们知道WPF中普通的按钮,长得丑,所以自定义按钮,在所难免.我们给按钮添加 MoveBrush,EnterBrush两把刷子,其实就是鼠标经过和鼠标按下的效果.只不过这不是普通的刷子,而是带图片的I ...

  4. centos7安装eclipse方法

    很多喜欢编程的朋友并不是很喜欢使用Windows来编写程序,尽管可视化编程但是操作相对繁琐,因而只在电脑上装有Linux系统,那么我们来说一下Linux下安装Java EE编程工具eclipse的方法 ...

  5. JMockit常用操作

    JMockit常用操作 2017-11-30 转自:http://blog.csdn.net/foreverling/article/details/51234149 目录 1 基本概念  1.1 常 ...

  6. 【Unity与23种设计模式】原型模式(Prototype)

    GoF中定义: "使用原型对象来产生指定类的对象,所以产生对象时,是使用复制原型对象来完成." Unity中 开发者可以组装游戏对象 它可以包括复杂的组件 组装好了之后,就可以将其 ...

  7. sql数据库中日期函数---2017-04-12

    一.SQLServer时间日期函数详解 1.  当前系统日期.时间 select getdate() 2. dateadd      在向指定日期加上一段时间的基础上,返回新的 datetime 值 ...

  8. iTerm2设置及使用

    1. 安装 iTerm2 下载地址:https://www.iterm2.com/downloads.html 下载的是压缩文件,解压后是执行程序文件,你可以直接双击,或者直接将它拖到 Applica ...

  9. 笔记:Maven 插件配置 - maven-jar-plugin

    在项目中内部重用某个模块的测试代码很常见的需求,可能某个底层模块的测试代码中包含一些常用的测试工具类,或者一些高质量的测试基类供继承,这个时候Maven用户就需要通过配置此插件将测试类打包,插件配置代 ...

  10. 笔记:Maven 下载和安装

    Windows 安装 下载 Apache Maven,下载地址为 http://maven.apache.org/ 解压缩下载的 ZIP 文件,复制到安装目录 增加环境变量 M2_HOME ,值为 A ...