• 0
Sign in to follow this  
Rodrigo Soares Leite

Inserir produtos com .net

Question

Bom dia, por gentileza estou com um problema na hora de inserir um produto usando c# .net, eu já autentiquei estou de posse do Token mas quando utilizo o codigo abaixo, 

 

NameValueCollection nc = new NameValueCollection();
                    nc.Add("access_token", accessToken);
                    nc.Add("client_id", clientId.ToString());
                    nc.Add("client_secret", consumerSecret);
                    Listhp.Add(nc);                    
                    //var response1 = meli.Post("/items/", listParameter, jobject1);
                    var response1 = meli.PostAsync("/items/",Listhp, json);
                    response1.Wait();
                    var rest = response1.Result;
 
Ele retorna badRequest, alguem tem algumas luz, estou com um tempo com esse problema, o retorno do erro é o seguinte.
 
 
rest; {StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Connection: keep-alive
  X-API-Name: syi-api
  X-API-Version: 1.00
  Vary: Accept
  Vary: Accept-Encoding
  X-Libra-UpstreamHost: 10.32.98.91
  X-GAV: master
  X-Content-Type-Options: nosniff
  X-Nginx-Host: e-00013de4
  X-Nginx-Pool: items-api-webserver-write-master
  X-Nginx-UpstreamHost: 172.16.38.89:80
  X-Request-Id: 174b6fc4-94a6-402c-9fcb-7cb98da3c808
  Access-Control-Allow-Origin: *
  Access-Control-Allow-Headers: Content-Type
  Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
  Access-Control-Max-Age: 86400
  Cache-Control: max-age=0
  Date: Mon, 08 Aug 2016 11:17:36 GMT
  Content-Type: application/json; charset=UTF-8
}}
    Content: {System.Net.Http.StreamContent}
    content: {System.Net.Http.StreamContent}
    disposed: false
    Headers: {Connection: keep-alive
X-API-Name: syi-api
X-API-Version: 1.00
Vary: Accept, Accept-Encoding
X-Libra-UpstreamHost: 10.32.98.91
X-GAV: master
X-Content-Type-Options: nosniff
X-Nginx-Host: e-00013de4
X-Nginx-Pool: items-api-webserver-write-master
X-Nginx-UpstreamHost: 172.16.38.89:80
X-Request-Id: 174b6fc4-94a6-402c-9fcb-7cb98da3c808
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
Access-Control-Max-Age: 86400
Cache-Control: max-age=0
Date: Mon, 08 Aug 2016 11:17:36 GMT
}
    headers: {Connection: keep-alive
X-API-Name: syi-api
X-API-Version: 1.00
Vary: Accept, Accept-Encoding
X-Libra-UpstreamHost: 10.32.98.91
X-GAV: master
X-Content-Type-Options: nosniff
X-Nginx-Host: e-00013de4
X-Nginx-Pool: items-api-webserver-write-master
X-Nginx-UpstreamHost: 172.16.38.89:80
X-Request-Id: 174b6fc4-94a6-402c-9fcb-7cb98da3c808
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
Access-Control-Max-Age: 86400
Cache-Control: max-age=0
Date: Mon, 08 Aug 2016 11:17:36 GMT
}
    IsSuccessStatusCode: false
    reasonPhrase: "Bad Request"
    ReasonPhrase: "Bad Request"
{
  User-Agent: MELI-NET-SDK/1.0.6.0
  Accept: application/json
  Content-Type: text/plain; charset=utf-8
  Content-Length: 2813
}}
{
  User-Agent: MELI-NET-SDK/1.0.6.0
  Accept: application/json
  Content-Type: text/plain; charset=utf-8
  Content-Length: 2813
}}
    statusCode: BadRequest
    StatusCode: BadRequest
    version: {1.1}
    Version: {1.1}
 
 
 
 
 
 
 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Olá,

 

1 -  eu não uso C#   :(

2 - não passe o secret, não é necessário acho que não afeta, mas é melhor não ficar expondo esta informação, em caso de erro pro exemplo. O secret só é usado para o token.

3 - na linha   'nc.Add("client_id", clientId.ToString());'   você deve enviar o sellerid ou 'nc.Add("sellerid", "84465725");'  

4 - mostre-nos o json enviado

5 eu acho que outro erro está aqui:   var response1 = meli.PostAsync("/items/",Listhp, json);  onde deveria ser    var response1 = meli.PostAsync("/items/", json, Listhp);

 

até mais

Share this post


Link to post
Share on other sites
  • 0

Ola amigo, obrigado pela atenção, segue o json para validar, na verdade eu peguei do próprio retorno do ML esse json, eu mudei o código, como exemplo a seguir.

 

// aqui eu retorno meu item

            var p = new RestSharp.Parameter();
            p.Name = "access_token";
            p.Value = m.AccessToken;
            var ps = new List<RestSharp.Parameter>();
            ps.Add(p);
            IRestResponse prod = m.Get("items/MLB723125884");
 
// se pego o meu json e Deserializo
Object obj = JsonConvert.DeserializeObject(prod.Content);
IRestResponse r = m.Post("/items", ps, obj);
 
 retorna o seguinte erro:
 
{"message":"No signature of method: static syi.api.validators.ItemFieldsValidator.getRequiredPostFields() is applicable for argument types: (org.codehaus.groovy.grails.web.json.JSONArray, java.util.LinkedHashMap) values: [[[[]], [[]], [[]], [[]], [[]], [[]], [[]], ...], ...]\nPossible solutions: getRequiredPostFields(java.util.Map), getRequiredPostFields(java.util.Map, java.lang.Object), getRequired_post_fields()","error":"internal_error","status":500,"cause":[]}
 
Se envio para o ML do jeito que veio 
IRestResponse r = m.Post("/items", ps, prod.Content);
 
Retorna o seguinte erro:
{"message":"body.invalid","error":"A body is expected. (B)","status":400,"cause":[]}
 
 
Se puder ajudar eu agradeço muito.
 
 
 
// json de retorno do ML

 

{"id":"MLB723125884","site_id":"MLB","title":"Farol Auxiliar Fortluz  Celta 06/ Prisma 06/12  Ld Direito","subtitle":null,"seller_id":84465725,"category_id":"MLB47010","official_store_id":null,"price":121.49,"base_price":121.49,"original_price":null,"currency_id":"BRL","initial_quantity":10,"available_quantity":10,"sold_quantity":0,"buying_mode":"buy_it_now","listing_type_id":"gold_special","start_time":"2015-11-16T02:11:55.000Z","stop_time":"2035-11-11T02:11:55.000Z","condition":"new","permalink":"http://produto.mercadolivre.com.br/MLB-723125884-farol-auxiliar-fortluz-celta-06-prisma-0612-ld-direito-_JM","thumbnail":"http://mlb-s1-p.mlstatic.com/832601-MLB20347412827_072015-I.jpg","secure_thumbnail":"https://mlb-s1-p.mlstatic.com/832601-MLB20347412827_072015-I.jpg","pictures":[{"id":"832601-MLB20347412827_072015","url":"http://mlb-s1-p.mlstatic.com/832601-MLB20347412827_072015-O.jpg","secure_url":"https://mlb-s1-p.mlstatic.com/832601-MLB20347412827_072015-O.jpg","size":"500x500","max_size":"500x500","quality":""}],"video_id":null,"descriptions":[{"id":"MLB723125884-968440537"}],"accepts_mercadopago":true,"non_mercado_pago_payment_methods":[{"id":"MLBMO","description":"Dinheiro","type":"G"},{"id":"MLBCC","description":"Cartãode Crédito","type":"N"},{"id":"MLBDE","description":"Depósito Bancário","type":"D"}],"shipping":{"mode":"me2","local_pick_up":false,"free_shipping":false,"methods":[],"dimensions":null,"tags":[]},"international_delivery_mode":"none","seller_address":{"id":116160273,"comment":"","address_line":"","zip_code":"","city":{"id":"BR-SP-44","name":"São Paulo"},"state":{"id":"BR-SP","name":"São Paulo"},"country":{"id":"BR","name":"Brasil"},"latitude":-23.58148203,"longitude":-46.64534951,"search_location":{"neighborhood":{"id":"","name":""},"city":{"id":"","name":""},"state":{"id":"TUxCUFNBT085N2E4","name":"São Paulo"}}},"seller_contact":null,"location":{},"geolocation":{"latitude":-23.58021174,"longitude":-46.64252995},"coverage_areas":[],"attributes":[],"warnings":[],"listing_source":"","variations":[],"status":"active","sub_status":[],"tags":["dragged_bids_and_visits","immediate_payment"],"warranty":null,"catalog_product_id":null,"parent_item_id":"MLB704198874","differential_pricing":null,"deal_ids":[],"automatic_relist":false,"date_created":"2015-11-16T02:11:55.000Z","last_updated":"2015-11-19T22:53:04.000Z"}

Share this post


Link to post
Share on other sites
  • 0

aí não vai funcionar mesmo!

vou enumerar novamente.

 

1 - você está pegando TODOS os dados de um produto existente e criando um novo. O id não deve ser passado, por exemplo. seller_address também não.

Agora serei grosseiro: deixa de ser preguiçoso e crie um json adequado.

 

2 - o "erro", como diz o camarada mldev, "é autoexplicativo": não está sendo enviado o json pelo post, na minha opinião os parâmetros de body e acesso estão trocados.

Mas o que está realmente indicando é que há campos obrigatórios que não estão sendo informados. Eu sei um deles: description!

Agora serei grosseiro: deixa de ser preguiçoso e crie um json adequado.

 

Até mais

 

ps: ignorarei outra pergunta desta

Share this post


Link to post
Share on other sites
  • 0

como diria o grande rodrigojob: "deixa de ser preguiçoso" ....rsrs

 

{"message":"body.invalid","error":"A body is expected. (B)","status":400,"cause":[]}

 

com o tempo que se perde esperando que alguém resolva o seu problema, você já o teria resolvido

 

1. releia a documentação e veja os campos obrigatórios

 

2. faça PASSO A PASSO, como o rodrigojob disse, crie um json adequado, isto já teria provavelmente resolvido seu problema

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this