原创

HttpHelper.cs http帮助类 - Dos.Common

 12378  2016/04/19 19:51:09

car_5

HttpHelper.cs在Dos.Common v1.0.5版本中进行了重写,这里不再说明v1.0版本用法。

v1.0.5版本中Get/Post请求都是3个重载,如下:

Get:

string HttpHelper.Get(string url)
string HttpHelper.Get(string url, object getParam)
string HttpHelper.Get(HttpParam param)

Post:

string HttpHelper.Post(string url)
string HttpHelper.Post(string url, object getParam)
string HttpHelper.Post(HttpParam param)

当然,以上返回类型string也可以替换为泛型T,如:

T HttpHelper.Get<T>(string url)

此时是在内部进行反序列化,相当于:

string s = HttpHelper.Get(string url)
T result = JsonConvert.DeserializeObject<T>(s)

用法:

如果参数仅仅是url或url+请求参数,只需要使用前两个重载,如:

var result = HttpHelper.Get("http://www.itdos.com", new { id=1, name="itdos" });

上面传入的两个参数,后面是一个object类型,可以传入Json对像:new { Key1 = Value1, Key2 = Value2},也可以传入Json字符串:"{\"Key1\":\"Value1\",\"Key2\":\"Value2\"}",也可以传入xml字符串等等。

如果参数大于两个,就要用到第三个重载,如:

var result = HttpHelper.Get(new HttpParam()
{
    Url = "http://www.itdos.com", 
    GetParam = new { id = 1, name = "itdos" },
    TimeOut = 5,
    ...
});

值得注意的是,.Post方法也加入了GetParam参数,用法如下:

//我们要post请求 http://www.itdos.com/?id=1,同时需要post数据name="ITdos",2秒超时
//有两种方式:
var result = HttpHelper.Post(new HttpParam()
{
    Url = "http://www.itdos.com/?id=1", 
    PostParam = new { name = "itdos" },
    TimeOut = 2
});
//或者(post请求的GetParam参数会在内部自动添加到url后缀上去):
var result = HttpHelper.Post(new HttpParam()
{
    Url = "http://www.itdos.com/", 
    GetParam = new { id = 1},
    PostParam = new { name = "itdos" },
    TimeOut = 2
});