我试图访问的URL缩短( http://goo.gl/通过其API从内部德尔福)。 然而,唯一的结果我得到的是:HTTP / 1.0 400错误的请求(原因:parseError)
这里是我的代码(有Button1的 ,Memo1和IdHTTP1有IdSSLIOHandlerSocketOpenSSL1作为其IOHandler一个形式。我得到了必要的32位的DLL的OpenSSL http://indy.fulgan.com/SSL/并把它们放到。 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;
更新:我已经离开了在这个例子中我的API密钥(通常应该没有一个试了几次不错的选择),但如果你想用你自己去尝试,你可以用替代actionurl串'https://www.googleapis.com/urlshortener/v1/url?key=<yourapikey>';
该ParseError消息使我相信,当它被公布,但我不知道是什么改变有可能是有点问题longurl的编码。
我一直在模糊化了这个相当长的一段时间,我在我眼前敢肯定,错误是 - 我只是没有看到它现在。 因此,任何的帮助感激!
谢谢!