Delphi: Verwenden von Google URL Shortener mit IdHTTP - 400 Bad Request

Ich versuche auf den URL Shortener zuzugreifen (http://goo.gl/ ) über seine API aus Delphi heraus. Das einzige Ergebnis, das ich bekomme, ist:HTTP / 1.0 400 Bad Request (Grund: parseError)

Hier ist mein Code (auf einem Formular mit einemTaste 1, Memo1 undIdHTTP1 das hatIdSSLIOHandlerSocketOpenSSL1 als sein IOHandler. Ich habe die notwendigen 32-Bit-OpenSSL-DLLs vonhttp://indy.fulgan.com/SSL/ und lege sie in das .exe-Verzeichnis):

procedure TFrmMain.Button1Click(Sender: TObject);
    var html, actionurl: String;
    makeshort: TStringList;
begin
try
 makeshort := TStringList.Create;

 actionurl := 'https://www.googleapis.com/urlshortener/v1/url';
 makeshort.Add('{"longUrl": "http://slashdot.org/stories"}');

 IdHttp1.Request.ContentType := 'application/json';
 //IdHTTP1.Request.ContentEncoding := 'UTF-8'; //Using this gives error 415

 html := IdHTTP1.Post(actionurl, makeshort);
 memo1.lines.add(idHTTP1.response.ResponseText);

     except on e: EIdHTTPProtocolException do
        begin
            memo1.lines.add(idHTTP1.response.ResponseText);
            memo1.lines.add(e.ErrorMessage);
        end;
    end;

 memo1.Lines.add(html);
 makeshort.Free;
end;

Aktualisieren: Ich habe in diesem Beispiel meinen API-Schlüssel weggelassen (sollte normalerweise ohne einen für einige Versuche gut funktionieren), aber wenn Sie es mit Ihrem eigenen versuchen möchten, können Sie den ersetzenactionurl Zeichenfolge mit'https://www.googleapis.com/urlshortener/v1/url?key=<yourapikey>';

Die ParseError-Nachricht lässt mich glauben, dass möglicherweise etwas mit der Codierung der Longurl nicht stimmt, wenn sie veröffentlicht wird, aber ich wüsste nicht, was ich ändern soll.

Ich habe schon eine ganze Weile darüber nachgedacht und bin mir sicher, dass der Fehler direkt vor meinen Augen liegt - ich sehe ihn gerade nicht. Jede Hilfe wird daher sehr geschätzt!

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage