尽我所能,我无法让HttpClient.PutAsync方法正常工作。我能够使GetAsync方法正常工作。我也能够在Postman
中成功进行PUT调用这是我在找不到404时使用的代码。
public static async Task<HttpResponseMessage> PutAsJsonAsync<Contact>(HttpClient client, Contact contact)
{
client.DefaultRequestHeaders.Add("X-API-TOKEN","MyT0k3n");
var json = JsonConvert.SerializeObject(contact);
var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
return await client.PutAsync("https://survey.qualtrics.com/API/v3/mailinglists/ML_123456/contacts/MLRP_123456", stringContent);
}
Contact类包含诸如“unsubscribed”之类的变量。
我也试过这个(https://gist.github.com/alexandrevicenzi/9216739),但是当我等待任务时,线程挂起并超时:
public static Task<HttpResponseMessage> PutJsonAsync(HttpClient client, string requestUri, Type type, object value)
{
return client.PutAsync(requestUri, new ObjectContent(type, value, new JsonMediaTypeFormatter(), "application/json"));
}
老实说,我对async,await或HttpClient并不是很熟悉。我过去使用过HttpWebRequest和WebRequest。我尝试使用旧方法进行PUT并且没有成功。有人有主意吗?