2015-06-25 6 views
5

Ich versuche, Anfragen zu senden und Antworten von MailChimp API zu erhalten. . Bisher funktionieren GET, POST und DELETE gut, aber PATCH führt immer zu Bad Request. Können Sie den Fehler in diesem Code identifizieren?REST API PATCH Anfrage

der Fehler occus in der Zeile mit request.GetResponse(); es ist ein nicht behandelter WebException sagen Der Remoteserver hat einen Fehler zurückgegeben: (400) Bad Request

nach der Fehlerreaktion Überprüfung, hier ist das, was sie sagt

"Your request doesn't appear to be valid JSON: 

\nParse error on line 1:\nPATCH /3.0/lists/9bb\n^\n 
Expected one of: 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['" 
+0

Es ist eine gute Idee, die Fehlermeldung beizufügen. – Opal

Antwort

11

Viele C# -Bibliotheken scheinen zu versuchen, den Header Expect: 100-Continue zu verwenden, mit dem MailChimp/Akamai ein Problem hat, wenn es mit PATCH kombiniert wird. Sie haben zwei Möglichkeiten.

  1. Deaktivieren Sie Expect: 100-Continue in Ihrer HTTP-Bibliothek. In einer C# -Bibliothek machen Sie das mit einer Codezeile wie Client.DefaultRequestHeaders.ExpectContinue = False

  2. Tunneln Sie die PATCH-Anforderung über HTTP POST mithilfe der X-Http-Method-Override-Header. Here's more details on that header.

+0

Option 2 mein Leben gerettet. Vielen Dank, jetzt bin ich nicht mehr in der Lage, meine Haare wieder zu ziehen –

+3

Option 2 hat mich auch gerettet! Vielen Dank! Ich implementiert diese mit: request.method = WebRequestMethods.Http.Post und request.Headers.Add ("X-Http-Methode-Override", "Patch") – DrewF

+0

Option 1 für mich gearbeitet ... vielen Dank. .. –

0

Ursache PATCH eine ganz neue RFC ist, so Sie würden nicht erwarten, dass mehr als ein paar Dienste es überhaupt unterstützen. Sie sollten das überprüfen, wenn der Dienst es unterstützt.

Sie senden Anfrage json-Format, sondern setzen Inhaltstyp "text/plain" ist das OK?

+0

bisher traf ich keine Probleme mit dem POST und GET-Methoden text/plain als Inhaltstyp mit –