Immer wenn ich versuche, eine Benachrichtigung an mehr als 20 Benutzer zu senden, wird ein Fehler ausgegeben Der Remote-Server hat einen Fehler zurückgegeben: (400) Ungültige Anforderung. Ich habe die ganze Lösung versucht, aber es gibt denselben Fehler. Hier ist mein Code: -Lösung Der Remote-Server hat einen Fehler zurückgegeben: (400) Ungültige Anforderung, wenn ContentLength zunimmt
private string SendGCMNotification(string apiKey, string postData)
{
try
{
WebRequest wRequest;
wRequest = WebRequest.Create("https://gcm-http.googleapis.com/gcm/send");
wRequest.Method = "POST";
wRequest.ContentType = "application/json;charset=UTF-8";
wRequest.Headers.Add(string.Format("Authorization: key={0}", apiKey));
var bytes = Encoding.UTF8.GetBytes(postData);
wRequest.ContentLength = bytes.Length;
var stream = wRequest.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
stream.Close();
var wResponse = wRequest.GetResponse();
stream = wResponse.GetResponseStream();
var reader = new StreamReader(stream);
var response = reader.ReadToEnd();
var httpResponse = (HttpWebResponse)wResponse;
var status = httpResponse.StatusCode.ToString();
reader.Close();
stream.Close();
wResponse.Close();
//TODO check status
}
catch (WebException ex)
{
Response.Write(ex.Message.ToString());
}
return "sent";
}
Meine web.config-Datei: -
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="30000000" maxUrl="10000" maxQueryString="10000" />
</requestFiltering>
</security>
</system.webServer>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="50000000" />
</webServices>
</scripting>
</system.web.extensions>
Welches 400 zurückkehrt? Der Google Server? Dann gibt es nichts, was Sie in Ihrer web.config tun können (weil das die Konfiguration für IHREN Server ist), aber Sie müssen google docs über das Format und die Einschränkungen mit den Anfragen an ihre API konsultieren. Vielleicht ist es nicht erlaubt, mehr als 20 Geräte in einem Anruf einzuschließen? – derpirscher
Ich habe die Google [docs] (https://developers.google.com/cloud-messaging/http-server-ref#downstream-http-messages-json) untersucht, es zeigt, dass wir zu einem Zeitpunkt 1000 Geräte hinzufügen können und ich bekomme diesen Fehler bei GetResponse() –
Nun, etwas stimmt nicht mit Ihren Postdaten oder Anfrage. Sonst gäbe es keine 400. – derpirscher