Web API后端调用接口 (Get,POST,Put,Delete)
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)的更多相关文章
- 从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目
原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(二)-创建项目 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
- Web API系列(二)接口安全和参数校验
以前简单介绍过web api 的设计,但是还是有很多朋友问我,如何合理的设计和实现web api.比如,接口安全,异常处理,统一数据返回等问题.所以有必要系统的总结总结 web api 的设计和实现. ...
- Web Api 与 Andriod 接口对接开发经验
最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...
- Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!
最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...
- Asp.Net Web Api 与 Andriod 接口对接开发
Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下! 最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用A ...
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
Redis总结(五)缓存雪崩和缓存穿透等问题 前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...
- 从零开始学习 asp.net core 2.1 web api 后端api基础框架(三)-创建Data Transfer Object
原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(三)-创建Data Transfer Object 版权声明:本文为博主原创文章,未经博主允许不得转载. ht ...
- 从零开始学习 asp.net core 2.1 web api 后端api基础框架(四)-创建Controller
原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(四)-创建Controller 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...
- 从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍
原文:从零开始学习 asp.net core 2.1 web api 后端api基础框架(一)-环境介绍 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.ne ...
随机推荐
- android 中获取视频文件的缩略图(非原创)
在android中获取视频文件的缩略图有三种方法: 1.从媒体库中查询 2. android 2.2以后使用ThumbnailUtils类获取 3.调用jni文件,实现MediaMetadataRet ...
- activiti当前任务高亮(解决乱码问题)
package com.xinwei; import java.io.File; import java.io.InputStream; import java.util.ArrayList; imp ...
- React 入门实例教程(转载)
本人转载自: React 入门实例教程
- 对jquery分页的升级
以前写的分页用了好久了,但是分页时除了传页面外有时还要传一些其它参数,以前操作时要把传的参数放到隐藏hidden中,分页时在取出来,这样比较麻烦,今天无事,重新包装了一下 直接上代码吧 css用了bo ...
- matlab GUI界面编程总结
去年做了一些关于Matlab GUI的程序,现在又要做相关的东西,回想起来,当时很多经验没有记录下来,现在回顾起来始终觉得不爽,所以从现在开始,一定要勤写记录. 从简单的例子说起吧. 创建Matlab ...
- 归并排序算法 java 实现
归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...
- 227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x)
登录ftp时显示227 Entering Passive Mode (xxx,xxx,,xxx,xxx,x) 因为FTP有两种工作模式,PORT方式和PASV方式,中文意思为主动式和被动式 ,详细介绍 ...
- margin padding
margin and padding有时候可以实现相同的效果但是 用padding的场合更多 2者的区别和用法的细节我还是没掌握好
- https基础流程
背景: https基于SSL,目的是保护http通信的过程,防止中间人篡改信息,或假冒服务端的问题. 要解决的问题: 1. 客户端如何证明是与正确的服务端进行通信 2. 客户端如何确认收到服务端的 ...
- SQL 还原数据库
1. 查看 SQL Server 2000 中 Northwind 数据库文件的逻辑文件名(logical file name)和物理文件路径(operation system file name): ...