HttpClient.cs
5.6 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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 Get(string resource , object obj)
{
var response = GetResponse(JsonHelper.SerializeObject(obj), resource);
string s = response.Content ?? "";
LogUtil.Debug($"HttpGet URL:【{BaseUrl}{resource}】Return:【{response.StatusCode}】【{s}】", log);
return s;
}
public RestResponse GetResponse(object body, string resource)
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
request.AddJsonBody(body);
return client.GetAsync(request).GetAwaiter().GetResult();
}
public RestResponse GetResponse(string body, string resource)
{
var request = new RestRequest() { Resource = resource };
AddHeaders(request, Headers);
request.AddStringBody(body,DataFormat.Json);
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);
}
}
}
}