WebRequest类是.NET Framework中“请求/响应”模型的abstract基类,用于访问Internet数据。使用WebRequest类请求/响应模型的应用程序可以用协议不可知的方式从Internet请求数据,在这种方式下,应用程序处理WebRequest类的实例,而协议特定的子类则执行请求的具体细节,请求从应用程序发送到某个特定的URI,如服务器上的网页。URI从一个为应用程序注册的WebRequest子类列表中确定要创建的适当子类。注册WebRequest子类通常是为了处理某个特定的协议(如HTTP或FTP),但是也可以注册它以处理对特定服务器或服务器上的路径的请求。
请求回传的数据类型枚举
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebHttp.Common
{
public enum ContentTypeEnum
{
/// <summary>
/// xml
/// </summary>
XML = 0,
/// <summary>
/// json
/// </summary>
JSON = 1
}
}
配置代理服务器的地址
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebHttp.Common
{
public class HttpClientConstant
{
/// <summary>
/// WebProxyHost在configuration中的配置名
/// </summary>
public static string WEB_PROXY_HOST = "WebProxyHost";
/// <summary>
/// WebProxyPort在configuration中的配置名
/// </summary>
public static string WEB_PROXY_PORT = "WebProxyPort";
}
}
请求类接口,定义了Post请求与Get请求
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WebHttp.Common
{
public interface IHttpClient
{
/// <summary>
/// post请求体
/// </summary>
/// <param name="url"></param>
/// <param name="strParams">body中的参数</param>
/// <returns></returns>
string DoPost(string url, string strParams);
/// <summary>
/// get请求数据
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
string DoGet(string url);
}
}
请求的具体事项类
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
namespace WebHttp.Common
{
public class WebHttp : IHttpClient
{
ContentTypeEnum EnumContentType { get; set; }
/// <summary>
/// 如果产生异常时,重试多少次
/// </summary>
int tryTime = 1;
public WebHttp(ContentTypeEnum enumContentType)
{
EnumContentType = enumContentType;
}
/// <summary>
/// 通过Pos