C # HttpClient публикует контент с объектом FormUrlEncodedContent в строке словаря / объект - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь опубликовать контекст на моем сервере. Вот как я делал это в прошлом, и это работало до тех пор, пока мне не пришлось использовать объекты, кроме строк.

using (HttpClient client = new HttpClient())
{
    client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(authType, tokens);
    var postParams = new Dictionary<string, object>();

    postParams.Add("string", string);
    postParams.Add("int", string);
    postParams.Add("datetime", DateTime);
    postParams.Add("datetime", DateTime);
    postParams.Add("Match", Match);
    postParams.Add("TicketId", token);

    using (var postContent = new FormUrlEncodedContent(postParams.ToDictionary()))
    {
        var myContent = JsonConvert.SerializeObject(postParams);
        var buffer = System.Text.Encoding.UTF8.GetBytes(myContent);
        var byteContent = new ByteArrayContent(buffer);
        byteContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

        using (HttpResponseMessage response = await client.PostAsync(@"http://url/api", byteContent))
        {
            response.EnsureSuccessStatusCode(); // Throw if httpcode is an error
            using (HttpContent content = response.Content)
            {
                string result = await content.ReadAsStringAsync();
                var Json = JsonConvert.DeserializeObject<bool>(result);
                return Json;
            }
        }
    }
}

И вот как должен выглядеть мой запрос.

methode: POST
object: {
    "title":"test-ticket-2",
    "detail": "Description test create ticket in prod",
    "dateStart": "2019-10-06",
    "dateEnd": "2019-10-12",
    "ratio": "2.15",
    "matchResult": "2",
    "matchs": [
            {
                "Teams": "Test-match-1",
                "Proposal": "3x",
                "DateStart": "2019-10-06 18:00",
                "DateEnd": "2019-10-06 20:00",
                "Payout": "0.6"
            }
             ]

Понятия не имею, ЕСЛИ и КАК я могу добавить Объекты, отличные от строки, и сделать запрос. Есть идеи?

Редактировать: Match выглядит так

public class Match
{
    public int Id { get; set; }
    public string Teams { get; set; }
    public string MatchResults { get; set; }
    public string Proposal { get; set; }
    public string Payout { get; set; }
    public DateTime? DateStart { get; set; }
    public DateTime? DateEnd { get; set; }
    public Uri Ball { get; set; }
    public int TicketId { get; set; }
}

1 Ответ

1 голос
/ 21 октября 2019

КАК я могу добавить Объекты, отличные от строки, и сделать запрос. Любые идеи?

using (HttpClient httpclient = new HttpClient()) 
{
    Models.ApplicationUser applicationUser = new ApplicationUser();
    string serialized = Newtonsoft.Json.JsonConvert.SerializeObject(applicationUser);
    StringContent stringContent = new StringContent(serialized);
    httpclient.PostAsync("url", stringContent);
}

Надеюсь, вы хотите сделать что-то вроде этого

...