2017-05-05 1 views
1

Je me casse la tête en essayant de télécharger un flux à walmart, après plusieurs fois en essayant j'ai utilisé le facteur pour générer le code C# restsharp pour moi, dans le facteur ça fonctionne, mais en utilisant le code C# restsharp retourne un erreur mystérieuse. comme ceci: « Aucun écrivain de corps de message a été trouvé pour la classe de réponse FeedAcknowledgement »télécharger feed à walmart

qu'est-ce que cela signifie?

voici mon code:

string requestUrl = ""; 
     requestUrl = string.Format("https://marketplace.walmartapis.com/v2/feeds?feedType=inventory"); 

     string method = "POST"; 

     // string[] sig = getSig(method, requestUrl).Replace("\r", "").Split('\n'); 

     var mySig = new Signature(ConsumerID, SecretKEY, requestUrl, method); 
     var s = mySig.TimeStamp; 
     var returendSigniture = mySig.GetSignature(s); 

     var client = new RestClient("https://marketplace.walmartapis.com/v2/feeds?feedType=inventory"); 
     var request = new RestRequest(Method.POST); 
     //request.AddHeader("postman-token", "c325ba5f-813a-f990-7899-6bfc4b14aa1b"); 
     request.AddHeader("cache-control", "no-cache"); 
     request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW"); 
     request.AddHeader("accept", "application/xml"); 
     request.AddHeader("wm_consumer.id", "--"); 
     request.AddHeader("wm_sec.auth_signature", returendSigniture); 
     request.AddHeader("wm_sec.timestamp", mySig.TimeStamp); 
     request.AddHeader("wm_qos.correlation_id", "123456abcdef"); 
     request.AddHeader("wm_svc.name", "Walmart Marketplace"); 
     request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"BOUNDERY\"\r\n\r\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<wm:inventory xmlns:wm=\"http://walmart.com/\">\n <wm:sku>PP00500-2PC</wm:sku>\n <wm:quantity>\n <wm:unit>EACH</wm:unit>\n <wm:amount>120</wm:amount>\n </wm:quantity>\n <wm:fulfillmentLagTime>1</wm:fulfillmentLagTime>\n</wm:inventory>\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody); 
     IRestResponse response = client.Execute(request); 
+0

Je ne sais pas pourquoi certains clochards inutiles ont décidé de déclasser ma question, je travaille et la recherche de ce problème pendant 2 semaines, semble être une ogive vide. outre le fait qu'il n'y a rien à propos de walmart api sur le web. – SpecialProgrammer

Répondre

0

J'ai passé toute la journée à trouver comment demander Walmart v3. Je vous propose les deux étapes suivantes:

  1. Utilisez Walmart signer pour générer un jeton signé.
  2. Vous devrez utiliser HttpWebRequest pour obtenir une réponse de Walmart d'une manière similaire à ce qui est décrit here.
+0

Avez-vous trouvé ma réponse utile? –

0

Je n'ai pas réussi à faire fonctionner cela en C#, mais j'ai du travail.

Le SDK Java peut soumettre des demandes multi-parties à Walmart. J'ai écrit un wrapper autour des fonctions SDK qui peuvent accepter l'entrée de ligne de commande de base pour lire un fichier texte et envoyer l'appel approprié avec les fichiers joints. De là, vous pouvez simplement appeler le fichier .jar (je le fais via un fichier de commandes généré dynamiquement) à partir de votre programme C# et recevoir des réponses via un fichier texte. C'est un système sous-optimal, mais il fonctionne de manière fiable et quand le choix était entre la mise à jour de l'inventaire sur 2000 éléments chaque jour et l'utilisation de code sale, je suis allé avec la méthode wrapper Java. Cela sera remplacé dès que le SDK C# sortira, mais je crois que c'est l'une des raisons pour lesquelles le SDK C# peut être retardé.

Cette solution a été utilisée seulement après avoir passé environ une semaine à essayer d'obtenir des limites/flux/pièces jointes pour travailler en C# et n'avoir aucun succès. Des cas ont également été soumis à walmart et j'ai été en mesure de travailler avec certains de leur personnel de soutien technique de haut niveau et ce problème les a complètement déconcentrés. J'ai pu tracer l'exécution du SDK Java jusqu'à une fonction Maven/Java intégrée qui a construit la requête Web. Il y a donc quelque chose sous le capot que fait Java avec une requête en plusieurs parties qui n'est pas immédiatement claire en C# .