Отправить JSON на запрос по почте с HttpClient и C # - PullRequest
0 голосов
/ 27 мая 2019

У меня проблема с этим кодом, моя цель - отправить модификацию через 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 с теми же параметрами, и он прекрасно работает.

1 Ответ

0 голосов
/ 27 мая 2019

Похоже, вы хотите опубликовать 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 . На нем много полезной информации об ответе.

...