none
WebService - JSON RRS feed

  • Pergunta

  • Pessoal, sou meio cru em relação a JSON e acabei pegando uma bucha aqui na empresa e não sei como resolver, vamos lá.

    Eu preciso passar algumas informações para um WebService

    Aqui é a documentação que tenho que a empresa me mandou

    Rest API JáTá Chegando - Documentação Inicial

    Métodos HTTP:

    GET - Request dos dados de um registro
    POST - Adição de um novo registro
    PUT - Atualização de um registro existente
    DELETE - Remoção de registro existente

    API Endpoint:

    http://beta.jatachegando.com/api/company/v0.1/*

    Actions:

    customer - Clientes
    address - Endereços
    courier - Entregadores
    order - Pedidos

    Action's Parameters:

    customer - código de área (phone_area), telefone (phone_number), nome (name), cpf (cpf), data de nascimento (birthday), sexo (sex), email (email)

    address - id cliente (id_customer), logradouro (address), número (address_number), id tipo endereço (address_type), complemento (complement), bairro (neighborhood), cep (zip_code), descrição (alias), ponto de referência (landmark), id cidade (id_city)

    courier - id empresa (id_company), nome (name), apelido (nickname), código de área (phone_area), telefone (phone_number), id meio de transporte (id_vehicle)

    order - id empresa (id_company), descrição (description), id cliente (id_customer), id endereço (id_address)

    * Itens em itálico são opcionais

    Exemplos de requisição:

    HTTP POST
    http://beta.jatachegando.com/api/company/v0.1/customer?access_token=[TOKEN]

    {"customer":{"phone_area":"19","phone_number":"777777777","name":"Teste Teste Com Api","cpf":"","birthday":"","sex":"0","email":""}}

    HTTP POST
    http://beta.jatachegando.com/api/company/v0.1/address?access_token=[TOKEN]

    {"address":{"id_customer": "3", "address":"RUA PALMEIRA SEAFÓRSIA","address_number":"1001","address_type":"1","complement":"","neighborhood":"JARDIM IRMÃOS SIGRIST","zip_code":"13.053-000","alias":"","landmark":"","id_city":"4814"}}

    HTTP POST
    http://beta.jatachegando.com/api/company/v0.1/courier?access_token=[TOKEN]

    {"courier":{"id_company": "2", "name":"TESTE COM API","nickname":"COM API","phone_area":"19","phone_number":"79558855","id_vehicle":"1"}}

    HTTP POST
    http://beta.jatachegando.com/api/company/v0.1/order?access_token=[TOKEN]

    {"order":{"id_company": "2", "description": "Testex", "id_customer": "3", "id_address": "2"}}

     string url = "http://beta.jatachegando.com/api/company/v0.1/customer/1?access_token=YzAxZWVlYWNkYmFmNWI0ZmMzM2RhZmIwMmE2ZmRlZTMxYTliZDY1MjQ0ZWJmNTkxMjkyY2I5N2ZhMWFkZjFkZjUwNmNkNjUzYWFmMmViODgzZTM0NWM5OTY1YmY4ODNiMjI2Mjg4ZWQ0NTAzNjZmNzdiM2MzODAwY2RiZGQ4MmI=";
                string result = "";
                string json = "{\"order\":{\"id_company\": \"14\", \"description\": \"Testex\", \"id_customer\": \"3\", \"id_address\": \"2\"}}";
                using (var client = new WebClient())
                {
                    client.Headers[HttpRequestHeader.ContentType] = "application/json";
                    result = client.UploadString(url, "POST", json);
                }

    Só que o result esta me retornando isso:

    {"response":{"error":{"error_code":"400","error_type":"BadInputException","error_message":"Bad parameters in this request (you can't use POST with an ID)"}}}

    O projeto é desktop.

    Onde estou errando?

    terça-feira, 1 de setembro de 2015 17:54

Respostas

  • Se você quer cadastrar um customer, tente o código abaixo:

    string url = "http://beta.jatachegando.com/api/company/v0.1/customer?access_token=YzAxZWVlYWNkYmFmNWI0ZmMzM2RhZmIwMmE2ZmRlZTMxYTliZDY1MjQ0ZWJmNTkxMjkyY2I5N2ZhMWFkZjFkZjUwNmNkNjUzYWFmMmViODgzZTM0NWM5OTY1YmY4ODNiMjI2Mjg4ZWQ0NTAzNjZmNzdiM2MzODAwY2RiZGQ4MmI=";
                string result = "";
                string json = "{\"customer\":{\"phone_area\":\"19\",\"phone_number\":\"777777777\",\"name\":\"Teste Teste Com Api\",\"cpf\":\"\",\"birthday\":\"\",\"sex\":\"0\",\"email\":\"\"}}";
                using (var client = new WebClient())
                {
                    client.Headers[HttpRequestHeader.ContentType] = "application/json";
                    result = client.UploadString(url, "POST", json);
                }
    

    Você deve se atentar aos seguintes pontos:

    1) Faça um POST para a URL api/company/v0.1/customer (sem o /1 no final, que indicaria uma atualização do customer com id 1)

    2) Envie o JSON que representa um customer, como está na documentação ({"customer":{"phone_area"...). Você está enviando o JSON de order 


    • Marcado como Resposta Pandox terça-feira, 1 de setembro de 2015 18:51
    terça-feira, 1 de setembro de 2015 18:29

Todas as Respostas

  • Você está fazendo um POST para a API /customer/1

    Esse 1 é o id do customer que você usaria para atualizar fazendo um PUT.

    Faça um teste sem o /1 e veja se resolve.

    terça-feira, 1 de setembro de 2015 17:58
  • Obrigado pela resposta Edney

    Fiz o teste e não consegui

    tentei de varias formas

    string json = "{\"order\":{\"id_company\": \"14\", \"description\": \"Testex\", \"id_customer\": \"\", \"id_address\": \"2\"}}";
    string json = "{\"order\":{\"id_company\": \"14\", \"description\": \"Testex\", \"id_customer\": \", \"id_address\": \"2\"}}";

    e até sem o customer

    string json = "{\"order\":{\"id_company\": \"14\", \"description\": \"Testex\", \"id_address\": \"2\"}}";

    e estou tento o mesmo erro

    terça-feira, 1 de setembro de 2015 18:18
  • Se você quer cadastrar um customer, tente o código abaixo:

    string url = "http://beta.jatachegando.com/api/company/v0.1/customer?access_token=YzAxZWVlYWNkYmFmNWI0ZmMzM2RhZmIwMmE2ZmRlZTMxYTliZDY1MjQ0ZWJmNTkxMjkyY2I5N2ZhMWFkZjFkZjUwNmNkNjUzYWFmMmViODgzZTM0NWM5OTY1YmY4ODNiMjI2Mjg4ZWQ0NTAzNjZmNzdiM2MzODAwY2RiZGQ4MmI=";
                string result = "";
                string json = "{\"customer\":{\"phone_area\":\"19\",\"phone_number\":\"777777777\",\"name\":\"Teste Teste Com Api\",\"cpf\":\"\",\"birthday\":\"\",\"sex\":\"0\",\"email\":\"\"}}";
                using (var client = new WebClient())
                {
                    client.Headers[HttpRequestHeader.ContentType] = "application/json";
                    result = client.UploadString(url, "POST", json);
                }
    

    Você deve se atentar aos seguintes pontos:

    1) Faça um POST para a URL api/company/v0.1/customer (sem o /1 no final, que indicaria uma atualização do customer com id 1)

    2) Envie o JSON que representa um customer, como está na documentação ({"customer":{"phone_area"...). Você está enviando o JSON de order 


    • Marcado como Resposta Pandox terça-feira, 1 de setembro de 2015 18:51
    terça-feira, 1 de setembro de 2015 18:29
  • Obrigado Edney.

    Funcionou certinho, mas eu vou precisar mandar todos, não só o customer.

    customer - Clientes - ok
    address - Endereços
    courier - Entregadores
    order - Pedidos

    Como ficaria?


    terça-feira, 1 de setembro de 2015 18:35
  • Pandox,

    Só manter o mesmo princípio: para cadastrar um address, faça um POST para api/company/v0.1/address e envie o JSON {"address":{"id_customer"...

    terça-feira, 1 de setembro de 2015 18:45
  • Agora eu entendi.

    Desculpe a ignorância.

    MUITO OBRIGADO

    terça-feira, 1 de setembro de 2015 18:51