5

Tenho a Seguinte classe definida:

public class Ticket
{
    public string name
    public string content
    public int itilcategories_id
}

E a seguinte amostra de código:

static HttpClient client = new HttpClient();

client.BaseAddress = new Uri("https://stgsd.primaverabss.com/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(
                new MediaTypeWithQualityHeaderValue("application/json"));

 ticket.name = "TESTE";
 ticket.content = "teste";
 ticket.itilcategories_id = 1

 HttpResponseMessage response = await client.PostAsync("apirest.php/Ticket/", XXXXXXXXX );

O meu objetivo é substituir os XXXXXXX que estão no PostAsync de forma a que no seu lugar passe a informação do Ticket e que ao enviar para o respectivo link o conteúdo seja o seguinte:

{"input":[{"name": "TESTE", "content": "teste", "itilcategories_id":"1"}]}

Alguma ideia? Qualquer dúvida avisem!!

0

1 Resposta 1

17

Para reproduzir o modelo apresentado, você precisa criar um objeto que possui um atributo chamado input e que este receba um array ou lista de Tickets. Depois você precisa serializar esse objeto em um json e passar ele como um StringContent() (adicionando os headers necessários) para o seu método PostAsync().

Segue um exemplo:

HttpClient client = new HttpClient();

client.BaseAddress = new Uri("https://stgsd.primaverabss.com/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));

var ticket = new Ticket();
ticket.name = "TESTE";
ticket.content = "teste";
ticket.itilcategories_id = 1;

List<Ticket> tickets = new List<Ticket>();
tickets.Add(ticket);

var parametro = new
{
    input = tickets.ToArray()
};            

var jsonContent = JsonConvert.SerializeObject(parametro); 
var contentString = new StringContent(jsonContent, Encoding.UTF8, "application/json");
contentString.Headers.ContentType = new 
MediaTypeHeaderValue("application/json"); 
contentString.Headers.Add("Session-Token", session_token); 


HttpResponseMessage response = await Client.PostAsync("apirest.php/Ticket/", contentString);
10
  • inclua a declaração do seu client Commented 26/03/2018 às 15:42
  • @idkWhy, Ajustado. Commented 26/03/2018 às 16:20
  • @IdkWhy, resolveu? Commented 26/03/2018 às 20:15
  • Dá erro 400: Bad Request
    – IdkWhy
    Commented 27/03/2018 às 9:59
  • Você tem certeza que aquele é o modelo esperado? via postman, você consegue realizar a operação? Commented 27/03/2018 às 11:13

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .