Я не могу отправить данные форума с помощью httpclient в формате json

#c#

#c#

Вопрос:

Я пытаюсь отправить данные форума в формате json для веб-сайта, но я получаю сообщение об ошибке. Я показываю ошибку на фотографии, буду рад, если вы поможете.

Мой код

  HttpClient client = new HttpClient();

        StringContent content = new StringContent("{"email":"babaprogang1@gmail.com","   ""password":"123123asdasd","   ""genderId":"" 0 "","   ""marketingEmailsAuthorized":true,"   ""conditionOfMembershipApproved":true,"   ""protectionOfPersonalDataApproved":true"   ""}");
        content.Headers.ContentType = new MediaTypeHeaderValue("application/json");


        var gord = await client.PostAsync("https://auth.trendyol.com/signup",content);
 

данные, которые мне нужно отправить на веб-сайт

 {
"email": "babalangfgo@gmail.com",
"password": "123asdasd",
"genderId": 0,
"marketingEmailsAuthorized": true,
"conditionOfMembershipApproved": true,
"protectionOfPersonalDataApproved": true
}
 

ошибка, с которой я столкнулся

введите описание изображения здесь

Я должен отправить так

введите описание изображения здесь

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

1. Возможно, вы захотите рассмотреть возможность использования пакета NuGet «Newtonsoft.JSON». Что касается вашего текущего кода, вам, возможно, придется избегать фигурной скобки, используя вторую. Вместо { того, чтобы пытаться использовать {{ и вместо } того, чтобы пытаться использовать }} .

2. можете ли вы прислать мне, как я могу сделать это в коде

3. В Newtonsoft.json есть много примеров, доступных в Интернете. Сотни, как в их официальной документации, так и в других местах. Проведите некоторые базовые исследования. Попробуйте что-нибудь и вернитесь к нам с вашей попыткой, если вы все еще застряли. Создание JSON вручную, как вы делаете сейчас, — отличный способ допустить глупые ошибки. Всегда создавайте объект c #, а затем сериализуйте его с помощью надежной библиотеки, такой как newtonsoft

4. Все это разбиение строки JSON, которую вы создаете, похоже на питательную среду для синтаксических проблем. Почему бы не сделать все это одной строкой, которую легче читать? (Вместо этого, конечно, не удалось использовать сериализацию JSON фактического объекта.) Написание кода, который легко читается людьми, значительно облегчает вам, как человеку, обнаружение проблем в этом коде.

Ответ №1:

Попробуйте следующее:

Добавить пакет NuGet: Newtonsoft.Json

  • В меню VS выберите Project
  • Выберите Управление пакетами NuGet…
  • Нажмите Обзор
  • Поиск: Newtonsoft.Json
  • Нажмите Установить
  • При появлении запроса нажмите OK

Добавить класс: Class1

  • В меню VS выберите Project
  • Выберите Добавить класс (имя: Class1.cs)

Class1.cs

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace NewtonsoftTest
{
    public class Class1
    {
        public string email { get; set; }
        public string password { get; set; }
        public int genderId { get; set; }
        public bool marketingEmailsAuthorized { get; set; }
        public bool conditionOfMembershipApproved { get; set; }
        public bool protectionOfPersonalDataApproved { get; set; }
    }
}
 

Использование:

 Class1 myClass1 = new Class1();
myClass1.email = "your_email_address";
myClass1.password = "your_password";
myClass1.genderId = 0;
myClass1.marketingEmailsAuthorized = true;
myClass1.conditionOfMembershipApproved = true;
myClass1.protectionOfPersonalDataApproved = true;

//serialize
string jsonStr = Newtonsoft.Json.JsonConvert.SerializeObject(myClass1, Newtonsoft.Json.Formatting.None);

System.Diagnostics.Debug.WriteLine(jsonStr);

StringContent content = new StringContent(jsonStr);

                   ...
 

Ответ №2:

Удалите » из конца вашей строки:

  StringContent content = new StringContent("{"email":"babaprogang1@gmail.com","   ""password":"123123asdasd","   ""genderId":"" 0 "","   ""marketingEmailsAuthorized":true,"   ""conditionOfMembershipApproved":true,"   
""protectionOfPersonalDataApproved":true}");