using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks; namespace Edc.Dao
{
public class HttpAPI
{
private const string DefaultUserAgent = "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36";
public string Compleatehtml = "";
private void BugFix_CookieDomain(CookieContainer cookieContainer)
{
System.Type _ContainerType = typeof(CookieContainer);
Hashtable table = (Hashtable)_ContainerType.InvokeMember("m_domainTable",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.GetField |
System.Reflection.BindingFlags.Instance,
null,
cookieContainer,
new object[] { });
ArrayList keys = new ArrayList(table.Keys);
foreach (string keyObj in keys)
{
string key = (keyObj as string);
if (key[0] == '.')
{
string newKey = key.Remove(0, 1);
table[newKey] = table[keyObj];
}
}
} public String DoGet(String url)
{
String html = "";
StreamReader reader = null;
HttpWebRequest webReqst = (HttpWebRequest)WebRequest.Create(url);
webReqst.Method = "GET";
webReqst.UserAgent = DefaultUserAgent;
webReqst.KeepAlive = true;
webReqst.CookieContainer = new CookieContainer();
webReqst.Timeout = 30000;
webReqst.ReadWriteTimeout = 30000;
try
{
HttpWebResponse webResponse = (HttpWebResponse)webReqst.GetResponse();
BugFix_CookieDomain(webReqst.CookieContainer);
if (webResponse.StatusCode == HttpStatusCode.OK)//&& webResponse.ContentLength < 1024 * 1024
{
Stream stream = webResponse.GetResponseStream();
stream.ReadTimeout = 30000;
if (webResponse.ContentEncoding == "gzip")
{
reader = new StreamReader(new GZipStream(stream, CompressionMode.Decompress), Encoding.Default);
}
else
{
reader = new StreamReader(stream, Encoding.UTF8);
}
html = reader.ReadToEnd();
}
}
catch (Exception ex)
{
throw ex;
} return html;
} public bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
{
return true; //总是接受
} public void DoPost(String url, String Content)
{
HttpWebRequest webReqst = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
webReqst = WebRequest.Create(url) as HttpWebRequest;
webReqst.ProtocolVersion = HttpVersion.Version10;
}
else
{
webReqst = WebRequest.Create(url) as HttpWebRequest;
}
webReqst.Method = "POST";
webReqst.UserAgent = DefaultUserAgent;
webReqst.ContentType = "application/x-www-form-urlencoded";
webReqst.ContentLength = Content.Length;
webReqst.CookieContainer = new CookieContainer();
webReqst.Timeout = 30000;
webReqst.ReadWriteTimeout = 30000;
try
{
//System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("gb2312");
byte[] data = Encoding.UTF8.GetBytes(Content);
webReqst.ContentLength = data.Length;
Stream stream = webReqst.GetRequestStream();
stream.Write(data, 0, data.Length); webReqst.BeginGetRequestStream(new AsyncCallback(Compleate), webReqst);
}
catch (Exception ex)
{
throw ex;
}
} private void Compleate(IAsyncResult asyncResult)
{
//Console.WriteLine("异步完成");
if (asyncResult == null)
{
return;
}
HttpWebRequest req = (asyncResult.AsyncState as HttpWebRequest);
HttpWebResponse res = req.GetResponse() as HttpWebResponse;
StreamReader reader = new StreamReader(res.GetResponseStream());
var html = reader.ReadToEnd();
//Console.WriteLine(reader.ReadToEnd());
Compleatehtml = html;
} public static string str;
public static HttpWebRequest request;
public string DoDelete(String url)
{
string urlPath = url;
//urlPath = urlPath + id;
int millisecond = 30000;
WebResponse response = null;
StreamReader reader = null;
try
{
request = (HttpWebRequest)WebRequest.Create(urlPath);
//request.Proxy = null;//关闭代理(重要)
request.Timeout = millisecond;
request.Method = "DELETE";
//request.Accept = "application/json";
//request.ContentType = "application/json";
request.ServicePoint.Expect100Continue = false;
response = (WebResponse)request.GetResponse();
reader = new StreamReader(response.GetResponseStream());
str = reader.ReadToEnd();
}
catch (Exception ex)
{ str = "";
}
return str;
}
public void DoPut(String url, String Content)
{ HttpWebRequest webReqst = null;
//如果是发送HTTPS请求
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
webReqst = WebRequest.Create(url) as HttpWebRequest;
webReqst.ProtocolVersion = HttpVersion.Version10;
}
else
{
webReqst = WebRequest.Create(url) as HttpWebRequest;
}
webReqst.Method = "PUT";
webReqst.UserAgent = DefaultUserAgent;
webReqst.ContentType = "application/x-www-form-urlencoded";
webReqst.ContentLength = Content.Length;
webReqst.CookieContainer = new CookieContainer();
webReqst.Timeout = 30000;
webReqst.ReadWriteTimeout = 30000;
try
{
//System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("gb2312");
byte[] data = Encoding.UTF8.GetBytes(Content);
webReqst.ContentLength = data.Length;
Stream stream = webReqst.GetRequestStream();
stream.Write(data, 0, data.Length); webReqst.BeginGetRequestStream(new AsyncCallback(Compleate), webReqst);
}
catch
{ }
} }
}

  

Web API后端调用接口 (Get,POST,Put,Delete)的更多相关文章

  1. 从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目

    原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

  2. Web API系列(二)接口安全和参数校验

    以前简单介绍过web api 的设计,但是还是有很多朋友问我,如何合理的设计和实现web api.比如,接口安全,异常处理,统一数据返回等问题.所以有必要系统的总结总结 web api 的设计和实现. ...

  3. Web Api 与 Andriod 接口对接开发经验

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  4. Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  5. Asp.Net Web Api 与 Andriod 接口对接开发

    Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!   最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用A ...

  6. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  7. 从零开始学习 asp.net core 2.1 web api 后端api基础框架(三)-创建Data Transfer Object

    原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(三)-创建Data Transfer Object 版权声明:本文为博主原创文章,未经博主允许不得转载. ht ...

  8. 从零开始学习 asp.net core 2.1 web api 后端api基础框架(四)-创建Controller

    原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(四)-创建Controller 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  9. 从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍

    原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...

随机推荐

  1. l创建Excel文件

    最近的项目中遇到需要将List<Map<String,String>>存储到Excel文件中,为满足此需求设计实现了如下函数: /** * 将MapList转化为Excel文件 ...

  2. python爬虫

    预:网页的组成 HTML(结构)+css(样式)+javascript(功能) 爬虫主要针对的是HTML和css HTML: <div></div>div标签 代表网页中某个区 ...

  3. 注册Jdbc驱动程序的三种方式

    注册Jdbc驱动程序的三种方式 1. Class.forName("com.mysql.jdbc.Driver"); 2. DriverManager.registerDriver ...

  4. 【转】centos关机与重启命令详解

    连接:http://blog.csdn.net/jiangzhengdong/article/details/8036594 Linux centos关机与重启命令详解与实战 Linux centos ...

  5. AppCan开发者资料分享(定期更新)

    开发者培训 上海20150925开发者培训资料:链接:http://pan.baidu.com/s/1mgCLzz6 密码:mqgi 版权声明:本文为博主原创文章,未经博主允许不得转载.

  6. 学习笔记:MySQL列属性

    列属性 a)         null|not null 缺省值是null,也就是允许为空,如果是not null而又没有给该字段赋值的话,系统会首先查询该字段有没有默认值 b)         de ...

  7. Andrion错误解决:cannot be resolved or is not a field

    cannot be resolved or is not a field   解决这个问题:   选择project菜单中的clean,选择你的项目,先clean一下, 再去看看Activity中有没 ...

  8. 我认识的log4j开源日志

    Log4j 在java中如何配置log4j!! 步骤: ①引入jar包,推荐新建一个lib文件夹,用来装所有的jar包(还要进行下图内的操作) 之后项目中就会多出一个引入外部Library的项目 ②创 ...

  9. 精益化设计:把敏捷方法和Lean UX相结合

    敏捷方法已经成为了主流.同时,Kindle和iPhone等设备取得的巨大成功也推动了体验设计的飞速发展.不过,如何把敏捷方法和UX设计结合起来,一直以来都是一个难题.文章将探讨如何把UX融入到最流行的 ...

  10. sql逻辑执行顺序

    要知道SQL语句,我想我们有必要知道SQL Server查询分析器怎么执行我们的SQL语句的,我们很多人会看执行计划,或者用Profiler来监视和调优查询语句或者存储过程慢的原因,但是如果我们知道查 ...