У меня проблема с этим кодом, моя цель — отправить модификацию через API, поэтому я делаю request
над HttpClient
.
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Text;
public class patchticket
{
public string patch(string ticketid)
{
using (var httpClient = new HttpClient())
{
using (var request = new HttpRequestMessage(new HttpMethod("PATCH"), "https://desk.zoho.com/api/v1/tickets/"+ticketid))
{
request.Headers.TryAddWithoutValidation("Authorization", "6af7d2d213a3ba5e9bc64b80e02b000");
request.Headers.TryAddWithoutValidation("OrgId", "671437200");
request.Content = new StringContent("{\"priority\" : \"High\"}", Encoding.UTF8, "application/x-www-form-urlencoded");
var response = httpClient.SendAsync(request);
return response
}
}
}
}
В результате у меня нет никакой ошибки, но изменения не вступают в силу.
Учетные данные в порядке, я протестировал его с помощью curl с теми же параметрами, и он отлично работает.
Да, извините, это PATCH, эти учетные данные неверны;)
Похоже, вы хотите опубликовать json
в запросе. Попробуйте определить правильный тип контента, а именно application/json
. Для образца:
request.Content = new StringContent("{\"priority\" : \"High\"}",
Encoding.UTF8,
"application/json");
Поскольку ваш метод возвращает string
, это может быть неасинхронный метод. Метод SendAsync
является асинхронным, и вам нужно дождаться завершения запроса. Вы можете попробовать вызвать Result
после запроса. Для образца:
var response = httpClient.SendAsync(request).Result;
return response.Content; // string content
И вы получите объект HttpResponseMessage. На нем много полезной информации об отзыве.
Хорошо, я попробую завтра, спасибо, ты думаешь, что проблема только в этом? Раньше я использовал var response = await httpClient.SendAsync(request);
, но у меня есть ошибка с ожиданием, оно говорит мне, что я не могу его использовать, знаете почему?
Окей, завтра попробую :)
Разве вы не имеете в виду «ПАТЧ» вместо «ПУТЬ»? Кроме того, теперь вам нужно изменить свои учетные данные API, поскольку вы представили их здесь.