我有這樣一段代碼,我試圖將其從異步任務[Http client post]轉換成rest sharp post方法。以下是與httpclient一起作業的異步任務方法的作業實體:
static async 任務 addEmailToListAsync(string ListName, string Email, string FirstName, string LastName)
{
try
{
var baseAddress = new Uri("https://api2.autopilothq.com/"/span>);
using (var httpClient = new HttpClient { BaseAddress = baseAddress })
{
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("autopilotapikey", "mykey") 。
using (var content = new StringContent("")
{
using (var response = await httpClient。 PostAsync("v1/list/" ListName "/contact/" Email, content))
{
string responseData = await response.Content.ReadAsStringAsync() 。
}
}
}
}
catch (Exception)
{
await addEmailToListAsync(ListName, Email, FirstName, LastName)。
}
這個方法起作用了,自動駕駛儀以"{ }"的形式回傳一個回應--這表明一切都很順利。
現在我試圖使用restsharp庫來轉換這個方法,并實作該方法不是異步任務--而是一個簡單的void函式:
public static void addEmailToList(string ListName, string Email, string FirstName, string LastName)
{
var client = new RestClient("https://api2.autopilothq.com/") 。
client.AddDefaultHeader("autopilotapikey", "mykey") 。
var request = new RestRequest("v1/list", Method.POST);
var jsonObj = JsonSerializer.Serialize(new)
{
ListName = ListName,
聯系人 = 電子郵件
});
request.AddParameter("application/json", jsonObj, ParameterType.RequestBody) 。
var res = client.Execute(request).Content。
var test = "" ;
這是我在轉換時嘗試的例子--但我一直收到restsharp的資訊,說主體資料無效......
我在這里做錯了什么?我都快急瘋了,怎么也想不明白。
誰能幫幫我?
有人能幫助我嗎?
uj5u.com熱心網友回復:
你的作業代碼在URL中發送串列名稱和電子郵件地址,并在請求體中發送一個空字串。
你的非作業版本將串列名稱和電子郵件地址作為JSON序列化的字串發送到正文中,并將其從URL中省略。
該錯誤訊息表明,您所呼叫的 API 不支持第二種資料傳遞方法。改變你的RestSharp代碼以匹配你的HttpClient代碼中的URL和請求體。
var request = new RestRequest("v1/list/"/span> ListName "/contact/"/span> Email, 方法。 POST)。)
var res = client.Execute(request).Content。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/306964.html
標籤:
