Delphi: Używanie Google URL Shortener z IdHTTP - 400 Bad Request

Próbuję uzyskać dostęp do adresu URL Shortener (http://goo.gl/ ) za pośrednictwem interfejsu API z poziomu Delphi. Jednak jedynym wynikiem, jaki otrzymuję, jest:HTTP / 1.0 400 Bad Request (powód: parseError)

Oto mój kod (na formularzu za pomocąPrzycisk 1, Memo1 iIdHTTP1 który maIdSSLIOHandlerSocketOpenSSL1 jak jego IOHandler. Mam potrzebne 32-bitowe biblioteki DLL OpenSSLhttp://indy.fulgan.com/SSL/ i umieść je w katalogu .exe:

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;

Aktualizacja: W tym przykładzie zrezygnowałem z klucza API (zwykle powinien on działać bez jednego na kilka prób), ale jeśli chcesz go wypróbować z własnym, możesz zastąpićactionurl ciąg z'https://www.googleapis.com/urlshortener/v1/url?key=<yourapikey>';

Komunikat ParseError prowadzi mnie do przekonania, że ​​podczas kodowania longurla może być coś nie tak, ale nie wiedziałbym, co zmienić.

Od dłuższego czasu nad tym zastanawiam się i jestem pewien, że błąd jest tuż przed moimi oczami - po prostu nie widzę tego teraz. Każda pomoc jest więc bardzo ceniona!

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion