HttpClient.cs
4.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
using log4net;
using RestSharp;
using System.Collections.Generic;
using System.Reflection;
namespace Common.Communication
{
public class HttpClient
{
static readonly LogBean log = new LogBean(MethodBase.GetCurrentMethod()?.DeclaringType.FullName);
public Dictionary<string, string> Headers = new Dictionary<string, string>();
public string BaseUrl { get; private set; }
RestClient client;
public HttpClient(string baseUrl, int httpTimeout = 10000)
{
BaseUrl = baseUrl;
client = new RestClient(new RestClientOptions(baseUrl)
{
ThrowOnAnyError = true,
Timeout = httpTimeout,
Encoding = System.Text.Encoding.UTF8
});
}
public string Get(string resource = "", Dictionary<string, string> query = null)
{
var response = GetResponse(resource, query);
string s = response.Content ?? "";
LogUtil.Debug($"HttpGet URL:【{BaseUrl}{resource}】Return:【{response.StatusCode}】【{s}】", log);
return s;
}
public RestResponse GetResponse(string resource = "", Dictionary<string, string> query = null)
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
if (query != null)
{
foreach (var kv in query)
request.AddQueryParameter(kv.Key, kv.Value);
}
return client.GetAsync(request).GetAwaiter().GetResult();
}
public string Post(string body, string resource = "")
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
request.AddStringBody(body, DataFormat.Json);
var response = client.PostAsync(request).GetAwaiter().GetResult();
string s = response.Content ?? "";
LogUtil.Debug($"HttpPost URL:【{BaseUrl}{resource}】【{body}】Return:【{response.StatusCode}】【{s}】", log);
return s;
}
public string Post(object body, string resource = "")
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
request.AddJsonBody(body);
var response = client.PostAsync(request).GetAwaiter().GetResult();
string s = response.Content ?? "";
LogUtil.Debug($"HttpPost URL:【{BaseUrl}{resource}】【{JsonHelper.SerializeObject(body)}】Return:【{response.StatusCode}】【{s}】", log);
return s;
}
public string Put(string resource, string body)
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
request.AddStringBody(body, DataFormat.Json);
var response = client.PutAsync(request).GetAwaiter().GetResult();
string s = response.Content ?? "";
LogUtil.Debug($"HttpPut URL:【{BaseUrl}{resource}】【{body}】Return:【{response.StatusCode}】【{s}】", log);
return s;
}
public string Put(string resource)
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
var response = client.PutAsync(request).GetAwaiter().GetResult();
string s = response.Content ?? "";
LogUtil.Debug($"HttpPut URL:【{BaseUrl}{resource}】Return:【{response.StatusCode}】【{s}】", log);
return s;
}
//public string Delete(string resource)
//{
// var request = new RestRequest() { Resource = resource };
// AddHeaders(request, Headers);
// var response = client.DeleteAsync(request).GetAwaiter().GetResult();
// string s = response.Content ?? "";
// LogUtil.Debug($"HttpDelete URL:【{BaseUrl}{resource}】Return:【{response.StatusCode}】【{s}】", log);
// return s;
//}
public System.Net.HttpStatusCode Delete(string resource)
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
var response = client.DeleteAsync(request).GetAwaiter().GetResult();
LogUtil.Debug($"HttpDelete URL:【{BaseUrl}{resource}】Return:【{response.StatusCode}】", log);
return response.StatusCode;
}
void AddHeaders(RestRequest restRequest, Dictionary<string, string> headers)
{
if (headers != null && headers.Count > 0)
{
restRequest.AddOrUpdateHeaders(headers);
}
}
}
}