Как мне установить пользовательское поле в Trello, используя C # и HttpRequestMessage?

#c# #trello

#c# #trello

Вопрос:

Я могу запрашивать карточки платы и пользовательские поля, используя этот код:


   string qString = @"https://api.trello.com/1/boards/{boardId}/cards?customFieldItems=trueamp;key={myKey}amp;token={myToken}";
  using(var request = new HttpRequestMessage(new HttpMethod("GET"), qString))
  {
    var response = await httpClient.SendAsync(request);
    String JsonString = await response.Content.ReadAsStringAsync();
  

И он возвращает информацию о карточках, включая следующую, которая рассказывает о моем элементе пользовательского поля:

    {
    "id": "5f5432b72678573fd5e#####",
     "value": {
       "text": "AAA"
     },
     "idCustomField": "5d24ae4cfe7cb10d611#####",
     "idModel": "5f542e224c5d2c2679d#####",
     "modelType": "card"
   }
  

Теперь я пытаюсь установить значение, используя следующий код:

     using(var httpClient = new HttpClient())
    {
       using(var request = new HttpRequestMessage(new HttpMethod("PUT"), @"https://api.trello.com/1/cards/"   myCardId   "/"   myCustomFieldId   "/item?"   "key={myKey}amp;token={myToken}"   "{value: { text: "New Value"}}"))
       {
            // i don't know how to set the header content so i commented it out
            //request.Headers.Add("content-type", "application/json");
            var response = await httpClient.SendAsync(request);
            String JsonString = await response.Content.ReadAsStringAsync();
  

Но он возвращается и говорит, что не может это поместить…

Спасибо, DF

Комментарии:

1. Можете ли вы опубликовать сообщение об ошибке?

2. jsonString = Не удается поместить /1/cards/{CardID}/{id}/item?key={ключ}amp;токен ={{токен}{value: { text: «Help»}}

3. ответ = {Код состояния: 404, Фраза причины: ‘Не найдено’, версия: 1.1, Содержимое: System.Net.Http.StreamContent, заголовки: { X-Dns-Prefetch-Control: отключено X-Frame-Options: ЗАПРЕТИТЬ X-Download-Options: не использовать X-Разрешенные междоменные политики: нет реферера-Polic…

4. Не могу ПОСТАВИТЬ /1/cards/{cardId}/{CustomFieldId}/item?key={myKey}amp;token={myToken}{value: {text: «TestName»}}

5. Ошибка, которую я получаю, когда включаю закомментированную строку в заголовок, чтобы я мог указать, что это application / json, такова: System. Исключение InvalidOperationException: ‘Неправильно использованное имя заголовка. Убедитесь, что заголовки запросов используются с HttpRequestMessage, заголовки ответов — с HttpResponseMessage, а заголовки содержимого — с объектами HttpContent . ‘

Ответ №1:

Спасибо за вашу помощь.

Я смог выяснить свой вопрос, используя этот веб-сайт, который преобразует Curl в C#:

https://curl.olsh.me/

 private async void button4_Click(object sender, EventArgs e)
{
   using(var httpClient = new HttpClient())
   {
       String query = @"https://api.trello.com/1/card/"   myCardId   "/customField/"   myCardsCustomFieldItems_IdCustomField   "/item";
     using(var request = new HttpRequestMessage(new HttpMethod("PUT"), query))
     {
        request.Content = new StringContent("{  "value": { "text": "Hello, world!" }, "key": "########",  "token": "#######" }");
        request.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json");

        var response = await httpClient.SendAsync(request);
        String JsonString = await response.Content.ReadAsStringAsync();

        this.textBox4.Text = query;
        this.richTextBox4.Text = JsonString;
      } 
    }
  }