之前只调用过自己写的接口,这个是调用外部接口

一.创建方法链接接口

  public static string HttpWebRequest(string url, string data, Encoding encode, string contentType = "application/x-www-form-urlencoded", CookieContainer cookieContainer = null, string UserAgent = null, WebProxy proxy = null, int timeOut = , string method = "Get", string token = null)
{
if (string.IsNullOrEmpty(url)) { return string.Empty; }
string result = string.Empty;
System.Net.HttpWebRequest webRequest = System.Net.WebRequest.Create(url) as System.Net.HttpWebRequest;//创建HttpWebRequest
try
{
webRequest.Method = method;//传输方式Get/Post
webRequest.Timeout = timeOut;/获取或设置 GetResponse 和 GetRequestStream 方法的超时值(以毫秒为单位)。
webRequest.ContentType = contentType;//内容类型
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";//获取或设置 Accept HTTP 标头的值。
webRequest.KeepAlive = true;
webRequest.UserAgent = UserAgent; //******************
//添加头,一般用于接口方验证
webRequest.Headers.Add("UserName", "TingZi Unique");
//****************** webRequest.ContentLength = ; //内容长度
if (!string.IsNullOrWhiteSpace(token))
webRequest.Headers.Add("X-Api-Auth", token);
if (proxy != null)
webRequest.Proxy = proxy;
if (cookieContainer != null)
{
webRequest.CookieContainer = cookieContainer;
}
if (!string.IsNullOrEmpty(data))
{
byte[] buffer = encode.GetBytes(data); // 转化
webRequest.ContentLength = buffer.Length;
//写入提交数据
using (System.IO.Stream newStream = webRequest.GetRequestStream())
{
newStream.Write(buffer, , buffer.Length); //写入参数
newStream.Flush();
}
} //提交请求
using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)webRequest.GetResponse())
{
if (cookieContainer != null)
{
response.Cookies = cookieContainer.GetCookies(response.ResponseUri);
}
//判断是否返回的是压缩信息
if (response.ContentEncoding.ToLower().Contains("gzip"))
{
using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress))
{
using (StreamReader sreader = new StreamReader(stream))
{
result = sreader.ReadToEnd();
}
}
}
else
{
using (Stream stream = response.GetResponseStream())
{
using (StreamReader reader = new StreamReader(stream, encode))
{
result = reader.ReadToEnd();
}
}
}
}
}
catch (WebException ex)
{
//这样可以看见返回的错误详细,如果上传项目别这样写直接输出错误就行
LogHelper.WriteErrorLog(ex);
var httpErrResponse = ((HttpWebResponse)ex.Response);
using (var stream = httpErrResponse.GetResponseStream())
{
if (stream != null)
{
using (var reader = new StreamReader(stream))
{
result = reader.ReadToEnd();
}
}
}
}
return HttpUtility.HtmlDecode(result);//返回调用接口返回值
}

PS:HttpWebReq类详细:https://msdn.microsoft.com/zh-cn/library/system.net.httpwebrequest(v=vs.110).aspx

二.调用方法

  public string GetUserBalance(MemberInfo model)//这个参数需要什么就可以传什么
{
LogHelper.WriteLog(string.Format("TingZi_Unique:{0}", DateTime.Now));//写日志
string PostUrl = "接口地址";
string JsonStr = "{\"username\":\"" + model.UserName + "\"}";//JSON类型参数,参数写这里
string retData = string.Empty;
retData = UtilsHelper.HttpWebRequest(PostUrl, JsonStr, Encoding.UTF8, contentType: "application/json", method: "POST");//调用方法
         //现在获取到了retData想判断什么判断什么
return "你想返回什么就返回什么!";
}

PS:小菜一只请多多指教

.NET接入接口/请求服务器的更多相关文章

  1. zzy:请求静态资源和请求动态资源, src再次请求服务器资源

    [总结可以发起请求的阶段:请求动态资源:通过web.xml匹配action然后,自定义Servlet处理该action1)form表单提交请求的时候,用action设定,该页面发起请求的Servlet ...

  2. IOS 请求服务器的方式

    IOS 中请求服务器的方式主要有Get 和Post . Get :[1]向服务器发索取数据的一种请求; [2]获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改;请求的参数会跟在url后 ...

  3. HttpClient请求服务器代码优化版

    HttpClient请求服务器代码优化版 首先,我在前面的两篇博文中介绍了在 Android中,除了使用java.net包下HttpUrlConnection的API访问HTTP服务之外,我们还可以换 ...

  4. Android使用HttpUrlConnection请求服务器发送数据详解

    HttpUrlConnection是java内置的api,在java.net包下,那么,它请求网络同样也有get请求和post请求两种方式.最常用的Http请求无非是get和post,get请求可以获 ...

  5. Android使用HttpClient以Post、Get请求服务器发送数据的方式(普通和json)

    讲这个之前,我们先来说说get和post两种请求的区别吧!!! 1. GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.jsp?name=te ...

  6. extjs Tree中避免连续单击会连续请求服务器

    应用场景:在项目中我要做一个左边是tree,右边是panel的界面.当我单击tree中的一条记录时,发送请求,并将结果显示在右边的panel中.做完之后发现,如果连续单击就会连续请求两次服务器,毕竟用 ...

  7. Ajax在jQuery中的应用(加载异步数据、请求服务器数据)

    加载异步数据 jQuery中的load()方法 load(url,[data],[callback]) url:被加载的页面地址 [data]:可选项表示发送到服务器的数据,其格式为 key/valu ...

  8. C# FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址。"的错误

    FTP上传文件时出现"应 PASV 命令的请求,服务器返回了一个与 FTP 连接地址不同的地址."的错误 解决方法是在原代码上增加这句话 reqFTP.UsePassive = f ...

  9. python请求服务器时如何隐藏User-Agent

    本文结合上一篇文章“python利用有道翻译实现“语言翻译器”的功能”的实现代码,对其进行加工,实现请求服务器时隐藏User-Agent. python实现隐藏User-Agent的一般做法有两种: ...

随机推荐

  1. 201521123020 《Java程序设计》第9周学习总结

    1.本周学习总结 2. 书面作业 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现什么异常.需要捕获吗(为什么)?应如何避免? 答:数组越界:不需要 ...

  2. 201521123030 《Java程序设计》 第12周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 1.将Student对象(属性:int id, String name,int age,dou ...

  3. eclipse : java项目中的web.xml( Deployment Descriptor 部署描述文件 )配置说明

    context-param.listener.filter.servlet  首先可以肯定的是,加载顺序与它们在 web.xml 配置文件中的先后顺序无关.即不会因为 filter 写在 listen ...

  4. 商城项目整理(四)JDBC+富文本编辑器实现商品增加,样式设置,和修改

    UEditor富文本编辑器:http://ueditor.baidu.com/website/ 相应页面展示: 商品添加: 商品修改: 前台商品展示: 商品表建表语句: create table TE ...

  5. SVM原理以及Tensorflow 实现SVM分类(附代码)

    1.1. SVM介绍 1.2. 工作原理 1.2.1. 几何间隔和函数间隔 1.2.2. 最大化间隔 - 1.2.2.0.0.1. \(L( {x}^*)\)对$ {x}^*$求导为0 - 1.2.2 ...

  6. Mybatis第五篇【Mybatis与Spring整合】

    Mybatis与Spring整合 既然我们已经学了Mybatis的基本开发了,接下来就是Mybatis与Spring的整合了! 以下使用的是Oracle数据库来进行测试 导入jar包 aopallia ...

  7. Oracle-更新字段-一张表的字段更新另一张的表的字段

    设备表ops_device_info中的终端号terminal_id值是以 'D'开头的字符串,而终端表ops__terminal_info中的终端号terminal_id是8位字符串, 它们之间是通 ...

  8. 简单CSS 布局

    CSS Layout CSS Layout 是对上下左右布局的一个简单封装,主要针对自己项目里面方便使用. 坚持组合大于继承的原则,复杂的布局也是由简单布局组成的. 所以不习惯margin/paddi ...

  9. mongoose api 图表整理

    一.背景 今天看 mongoose 的基础 API,参考了下面的链接做了图表以供查阅. 参考资料: http://www.cnblogs.com/xiaohuochai/p/7215067.html ...

  10. mysql 1093错误

    1093错误:修改一个表的时候子查询不能是同一个表 解决办法:把子查询再套一层,变成原来表的孙子查询就可以了 例如: INSERT INTO gg SET id3=(SELECT c.a+1 FROM ...