envoyer envoyer demande Https avec un Type de Contenu application Json en C#
J'essaie d'envoyer la requête suivante :
POST /messaging/registrations/(REGISTRATION_ID_FOR_DESTINATION_APP_INSTANCE)/messages HTTP/1.1
Host: api.amazon.com
Authorization: Bearer (MY_ACCESS_TOKEN)
Content-Type: application/json
X-Amzn-Type-Version: com.amazon.device.messaging.ADMMessage@1.0
Accept: application/json
X-Amzn-Accept-Type: com.amazon.device.messaging.ADMSendResult@1.0
{
"data":{"message":"value1","title":"value2"},
"consolidationKey":"Some Key",
"expiresAfter":86400
}
afin d'obtenir un format de réponse comme ceci:
HTTP/1.1 200
X-Amzn-Data-md5: t5psxALRTM7WN30Q8f20tw==
X-Amzn-RequestId: e8bef3ce-242e-11e2-8484-47f4656fc00d
Content-Type: application/json
X-Amzn-Type-Version: com.amazon.device.messaging.ADMSendResult@1.0
Content-Length: 308
{"registrationID":(REGISTRATION_ID_FOR_DESTINATION_APP_INSTANCE)}
à faire que j'ai essayé avec ce code :
private void sendNotification(String registrationID,String message,
String title,String accessToken)
{
//registrationID content (REGISTRATION_ID_FOR_DESTINATION_APP_INSTANCE) that can vary
string url = "https://api.amazon.com/messaging/registrations/"+ registrationID +"/messages";
var client = new HttpClient();
//set Request headers
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
"Bearer", accessToken);
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("X-Amzn-Type-Version",
"[email protected]");
client.DefaultRequestHeaders.Add("X-Amzn-Accept-Type",
"[email protected]");
//the content of the message body
var content = new Dictionary<string, Object>();
content.Add("consolidationKey", "SyncNow");
content.Add("expiresAfter", 86400);
var data = new Dictionary<string, string>();
data.Add("message", message);
data.Add("title", title);
content.Add("data", data);
var result = client.PostAsJsonAsync<Dictionary<string, Object>>(url, content).Result;
}
Comme réponse que je reçois StatusCode:400,ReasonPhrase: "Bad Request", je ne sais pas pourquoi ??
quelqu'un peut m'aider, s'il vous plaît !!
Pour le détail sur la suite qui j'ai eu:
result {StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
x-amzn-RequestId: 1b943a1c-fe94-11e2-b963-71a537223b43
Vary: Accept-Encoding
Vary: User-Agent
Cneonction: close
Date: Tue, 06 Aug 2013 12:31:24 GMT
Content-Length: 34
Content-Type: application/json
}} System.Net.Http.HttpResponseMessage
result.RequestMessage {Method: POST,
RequestUri: 'https://api.amazon.com/messaging/registrations/(REGISTRATION_ID_FOR_DESTINATION_APP_INSTANCE)/messages',
Version: 1.1,
Content: System.Net.Http.ObjectContent`1[[System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],
[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]],
Headers:
{
Authorization: Bearer (MY_ACCESS_TOKEN)
Accept: application/json
X-Amzn-Type-Version: com.amazon.device.messaging.ADMMessage@1.0
X-Amzn-Accept-Type: com.amazon.device.messaging.ADMSendResult@1.0
Content-Type: application/json; charset=utf-8
Content-Length: 98
}} System.Net.Http.HttpRequestMessage
OriginalL'auteur mouhcine | 2013-08-06
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une autre solution qui fonctionne parfaitement .
OriginalL'auteur mouhcine
Simplement en regardant rapidement, il semble que cette ligne de code est faux.
basée sur le fait que vous êtes en train de dire qu'amazon veut le poste json ressembler à ça.
Il semble que vous devriez être en train de passer votre var contenu de la poste plutôt que de données de la var. I. e.
Je ne vois rien, évidemment, est mal dans votre code. Vous pouvez télécharger et exécuter un proxy comme fiddler et de le configurer pour fonctionner avec le protocole https et voir ce qui est en fait envoyé à travers le fil. Peut-être que quelque chose de bizarre qui se passe avec les en-têtes, mais c'est difficile à dire sans être en mesure de regarder ce qui est envoyé et retourné. Généralement une mauvaise demande est parce que quelque chose est incorrect avec le json post.
ok !! pense @cgotberg pour tous. J'ai trouvé une autre solution.
OriginalL'auteur cgotberg