- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 Delphi 中通过其 API 访问 URL 缩短器 ( http://goo.gl/ )。但是,我得到的唯一结果是:HTTP/1.0 400 Bad Request (reason: parseError)
这是我的代码(在带有 Button1、Memo1 和 IdHTTP1 的表单上,其中 IdSSLIOHandlerSocketOpenSSL1 作为它的 IOHandler。我从 http://indy.fulgan.com/SSL/ 获取了必要的 32 位 OpenSSL DLL,并将它们放在 .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 key (通常在没有 key 的情况下尝试几次也能正常工作),但如果您想用自己的 API key 进行尝试,则可以将其替换为actionurl 字符串 'https://www.googleapis.com/urlshortener/v1/url?key=<yourapikey>';
ParseError 消息让我相信长网址的编码在发布时可能有问题,但我不知道要更改什么。
我已经对此模糊了很长一段时间,我确信这个错误就在我眼前 - 我只是现在没有看到它。因此,非常感谢任何帮助!
谢谢!
最佳答案
正如您所发现的,TStrings
重载版本的 TIdHTTP.Post()
方法是错误的使用方法。它发送 application/x-www-form-urlencoded
格式的请求,这不适用于 JSON 格式的请求。您必须改用 TStream
重载版本的 TIdHTTP.Post()
方法,例如:
procedure TFrmMain.Button1Click(Sender: TObject);
var
html, actionurl: String;
makeshort: TMemoryStream;
begin
try
makeshort := TMemoryStream.Create;
try
actionurl := 'https://www.googleapis.com/urlshortener/v1/url';
WriteStringToStream(makeshort, '{"longUrl": "http://slashdot.org/stories"}', IndyUTF8Encoding);
makeshort.Position := 0;
IdHTTP1.Request.ContentType := 'application/json';
IdHTTP1.Request.Charset := 'utf-8';
html := IdHTTP1.Post(actionurl, makeshort);
finally
makeshort.Free;
end;
Memo1.Lines.Add(IdHTTP1.Response.ResponseText);
Memo1.Lines.Add(html);
except
on e: Exception do
begin
Memo1.Lines.Add(e.Message);
if e is EIdHTTPProtocolException then
Memo1.lines.Add(EIdHTTPProtocolException(e).ErrorMessage);
end;
end;
end;
关于Delphi:使用 Google URL Shortener 和 IdHTTP - 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11828153/
我正在寻找优雅的方法来“缩短”对象的(用户提供的)名称。更准确地说: 我的用户可以输入自由文本(用作某些对象的“名称”),他们最多可以使用 64 个字符(包括空格、标点符号……) 除了那个“长”名字;
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我想编写一个不必使用数据库的 URL 缩短器。相反,为了让移动部件尽可能少,脚本只会根据算法为我的 URL 创建一个唯一的哈希值(如 md5,但 md5 会太长)。我不太确定我会怎么做。有什么建议吗?
也许“缩短”这个词并不恰当;我会尽力解释。 我想向用户显示文件的路径,但我希望将主路径缩短为 ~,将根路径缩短为/。 例如,给定用户主目录中的文件 MyImage.png 的路径类似于: /Volum
通过Google API,我正在以编程方式创建简短的URL。这很好。在我的API控制台上,我可以看到统计信息,例如,自上周五我开始使用此API以来,显示的请求数量为“ urlshortener.url
怎么修剪diffForHumans() ? 赞 $post->created_at->diffForHumans()返回前一段时间 赞 3 days ago或 57 minutes ago , 或 2
这是我的问题:我想缩短字符串,但在开头。例如,“string”应该是“tring”,或者“help”应该变成“elp”。只需是第一个字母即可。 有什么想法吗?谢谢! =) 最佳答案 要么 string
是否可以让多个按钮调用同一个方法?我的意思是参数将是按钮的 ID。我的问题是我得到了一个非常非常长的 switch case 函数,并且每个 case 都有相同的方法。这是我的代码 fragment
我正在模拟 Ising Model使用简单的编码结构来处理尺寸大于 3 的铁磁体,但在效率方面存在一些问题。在我的代码中,有一个特定的函数是瓶颈。 在模拟过程中,需要找到所谓的给定站点的最近邻居。例如
我有字符串,我想缩短第一个单词,让它像这样;有什么方法吗? var name = "John Doe" ---> "J. Doe" 谢谢, 最佳答案 尝试这样的事情怎么样,在空间上分割然后获取第一个数
API 新手...我正在查看此处的文档 (https://developers.google.com/url-shortener/v1/getting_started),但无法使用以下命令:
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。
goo gl 可以支持多少个 URL?以及它的当前填充速度是多少。 我可以看到它使用大小字母和数字创建了唯一的 URL。这使它的容量为 (26*2+10)^5,这个估计是否正确。 最佳答案 我认为数学
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
使用google url缩短器api,在我开始进行负载测试之前,它工作正常。即使我注册使用API,并且每天有1,000,000次匹配,但很快就开始从Google取回403 Rate Limit E
我正在尝试使用 Google URL Shortener API。我已启用 Google URL Shortener API 并生成了 API key 。我按照这个例子http://hayageek.
下面的示例是有效的并且可以正常工作,但是它太长并且经常重复相同的事情。 (我必须这样做,因为我可能不会使用多重上传属性 - HTML5 -)。用户应该能够每次通过新的输入文件元素上传多个文件(最多 5
由于缺乏 PHP 和 MySQL 经验,我正在根据此 YouTube 教程 (PHPAcademy) 为我的网站创建一个 URL 缩短器,我觉得我很快就能掌握它,但是当我收到此错误消息时提交网址。 P
我为将 bash 包含在 PS1 环境变量中实现了一个提示路径缩短器,它将工作目录缩短为更紧凑但仍具有描述性的内容。我很好奇可能存在哪些其他想法。 这是挑战: 创建一个 bash 函数 _dir_ch
是的,又一个用 java 编写的 url 缩短器,因为我想要我自己的,因为为什么不呢。目前一切正常,只是不是我想要的那样。总之,整个项目中只有一个servlet映射到“/”。没有涉及框架,也没有任何花
我是一名优秀的程序员,十分优秀!