我想從我擁有的一些功能中從使用 rest RestClient 更改為使用 HttpClient 和 HttpRequestMessage ,但是,它似乎沒有相應地作業,因為它沒有連接到服務器。
如何更改 RestClient 并使用 HttpRequestMessage,請參閱下面的代碼原始代碼和我的代碼更改或嘗試?
有沒有更簡單的方法將 RestClient 轉換為 HttpRequestMessage?
Original-獲取會話
public AuthInfo GetSession()
{
try
{
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
string url = string.Format("{0}xxx/xxx/xxx?xxx", _client._Url);
var client = new RestClient(url)
{
Timeout = -1
};
var request = new RestRequest(Method.POST).AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("params", "{\"login\":\"" _client._Login "\",\"password\":\"" _client._Password "\"}");
var response = client.Execute(request);
return JsonConvert.DeserializeObject<AuthInfo>(response.Content);
}
catch (Exception ex)
{
throw ex;
}
}
這就是我嘗試使用 HttpRequestMessage 獲取會話的方式
public async Task<AuthInfo> GetSession1()
{
string jsonString = string.Empty;
try
{
BaseRateMonitorSettings settings = GetAppSettings();
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
string url = string.Format("{0}xxx/xxx/xxx?xxx", settings.Url);
HttpClient client = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, url);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var values = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("login", settings.Login),
new KeyValuePair<string, string>("password", settings.Password)
};
HttpResponseMessage response = await client.PostAsync(url, new FormUrlEncodedContent(values));
//removing extra charactors
jsonString = response.Content.ReadAsStringAsync().Result.Replace("\\", "").Trim(new char[1] { '"' });
var data = JsonConvert.DeserializeObject<AuthInfo>(jsonString);
client.Dispose();
return data;
}
catch (Exception ex)
{
throw ex;
}
}
uj5u.com熱心網友回復:
您嘗試修改方法“GetSession1”中的一些代碼:轉換后缺少鍵“params”:
var values = new List<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>("params", "{\"login\":\"" settings.Login "\",\"password\":\"" settings.Password "\"}")
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/431774.html
下一篇:如何在SpringBoot中發送帶有header、params和body作為rest模板的postrestfulapi
