2015-08-13 1 views
3

J'accède à Amazones MWS-Api via parse.com (qui est construit sur nodejs) et rencontre des problèmes avec leurs rapports flatfile (le point de terminaison getreport). Tous les caractères spéciaux (ä, ö, ü) sont simplement supprimés. Selon le MWS-Support, ils utilisent le CP1252-Encoding. Voici le code de la demande.Parse.com/Nodejs Les caractères spéciaux http-request ont été supprimés

// Parse.Cloud.httpRequest is parses version of the nodejs http-module 
Parse.Cloud.httpRequest({ 
    url: "https://mws.amazonservices.de/?", 
    method: "POST", 
    headers: { 
     "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", 
     "Host": "mws.amazonservices.de", 
     "x-amazon-user-agent": "MyUserAgent(Language=Javascript)", 
     "Accept-Charset": "CP1252" 
    }, 
    body: queryString 
    success: function(resp){ 
      response.success(resp) 
     } 
    }, 
    error: function(err){ 
     response.error(err) 
    } 

La réponse en-têtes que je reçois présente comme suit:

{ 
    "Connection": "close", 
    "Content-Length": "395828", 
    "Content-MD5": "Xw8KYGqESc7u4TTzgcbT/g==", 
    "Content-Type": "text", 
    "Date": "Thu, 13 Aug 2015 10:21:00 GMT", 
    "Server": "AmazonMWS", 
    "Vary": "Accept-Encoding,User-Agent", 
    "x-amz-request-id": "xxxxx", 
    "x-mws-quota-max": "60.0", 
    "x-mws-quota-remaining": "58.0", 
    "x-mws-quota-resetsOn": "2015-08-13T10:38:00.000Z", 
    "x-mws-request-id": "xxxxx", 
    "x-mws-response-context": "C0ywPcTe0K9qESsoz4OzZX9oRJMDuYR9vvk5MfN3KKOGEnyWgSZlOQDixINemnwLVZl0DjXEdrY=", 
    "x-mws-timestamp": "2015-08-13T10:21:01.186Z" 
} 

Pour clarifier les choses, les caractères spéciaux ne sont pas brouillé (pas « » ou quelque chose comme ça). "Für" est simplement reçu comme "Fr" .Ordre, j'ai le même problème avec amazons scratchpad (https://mws.amazonservices.de/scratchpad/index.html), qui devrait, selon le MWS-Support, montrer les caractères spéciaux correctement. Merci pour toute aide à l'avance.

edit1: Aussi, un de mes collègues a un problème très similaire avec parse, dans un projet complètement indépendant (source de données différente n tout). Après un peu d'expérimentation en python, je suis à peu près certain que son flux de données est encodé en latin1, pas utf8, ce qui semble causer le problème. N'importe quelle façon d'imposer le codage latin1 ou CP1252 dans l'analyse?

Répondre

1

Le support Amazon a confirmé que c'était un bug de leur côté et, à ce que je peux dire, l'a corrigé.

0

Vous demandez déjà à parse.com de vous envoyer les données dans utf-8.

attention à ces lignes:

"Content-Type": "application/x-www-form-urlencoded; charset=utf-8", 
    "Accept-Charset": "utf-8" 

La modification de ces valeurs latin1 pourrait fonctionner, si vous pouvez établir des parallèles avec votre collegue.

Cependant, la question this sur les forums parse.com peut vous éclairer sur votre problème. Ce pourrait être un problème client (votre). Avez-vous essayé de changer le codage de votre côté?

+0

Vous avez mal compris. La requête envoyée forme le code dans ma question va à amazon. Je ne demande jamais rien d'analyser. La réponse d'amazon sera traitée en parse et enregistrée dans la base de données. Il n'y a pas de "côté client", ou plutôt, le code du nuage d'analyse est le côté client. L'en-tête de réponse d'Amazon ne spécifie aucun codage, mais le support MWS a signalé que tous les rapports sont codés dans CP1252. Le problème de latin1 est juste lié dans la mesure où dans les deux cas, nous avons besoin d'un moyen de spécifier le codage de la réponse reçue en analyse. – MoorzTech