Delphi中使用goo.gl(Google的缩短URL服务)API


本文整理自网络,侵删。

 
介绍如何在Delphi中使用goo.gl(Google的缩短URL服务)API获得缩短的URL。

由于很难理解如何将数据发送到API,因此对其进行了总结。
我认为分析JSON数据的方法会有所帮助。

提前准备
在Google API页面上启用URL Shortener API
登录到Google API控制台 https://code.google.com/apis/console/,选择“服务”菜单,然后将“ URL缩短器API”更改为“有效”。

将“ URL缩短器API”更改为“有效”

获取API密钥
在Google API控制台 https://code.google.com/apis/console/中选择“ API访问”菜单,然后单击“创建新的浏览器密钥”按钮以创建API密钥。(“引荐来源”字段留空)

按下“创建新的浏览器键”按钮

创建一个API密钥

获取SSL所需的DLL(libeay32.dll,ssleay32.dll)
从百度搜索自己下载。


程序
启动Delphi并创建一个新项目。

在窗体上放置两个TButton,TMemo,TIdHTTP,TIdSSLIOHandlerSocketOpenSSL。



在IdHTTP1的IOHander属性中设置IdSSLIOHandlerSocketOpenSSL1。

在IdHTTP1的IOHander属性中设置IdSSLIOHandlerSocketOpenSSL1

为Button1添加一个OnClick事件。

uses IdGlobal;

procedure TForm1.Button1Click(Sender: TObject);
const
  // API key
  API_KEY: string = '…';
  // 短?sURL
  LONG_URL: string = 'http://www.google.com/';
var
  Url: string;
  ASource: TMemoryStream;
  AResponseContent: string;
begin
  Url := 'https://www.googleapis.com/urlshortener/v1/url?key=' + API_KEY;

  ASource := TMemoryStream.Create;
  WriteStringToStream(ASource, Format('{ "longUrl": "%s" }', [LONG_URL]),
    IndyUTF8Encoding);
  ASource.Position := 0;

  IdHTTP1.Request.ContentType := 'application/json';
  IdHTTP1.Request.CharSet := 'UTF-8';

  try
    AResponseContent := IdHTTP1.Post(Url, ASource);
  finally
    Memo1.Lines.Add(AResponseContent);
    ASource.Free;
  end;
end;
添加一个IdGlobal单元以用于使用WriteStringToStream函数。
使用WriteStringToStream函数将要发送的参数写入流。

某些TIdHttp Post方法接受TString作为参数,但是由于传输数据的格式不同,因此无法使用它们。
TStream必须作为参数传递。

将URL Shortener API结果输出到Memo1。

以下JSON格式字符串输出到Memo1。

{
 "kind": "urlshortener#url",
 "id": "http://goo.gl/XXXX",
 "longUrl": "http://www.google.com/"
}
在Button2的OnClick事件中,解析JSON格式的字符串以获得缩短的URL。

uses Data.DBXJSON;

procedure TForm1.Button2Click(Sender: TObject);
var
  JSONObject: TJSONObject;
  ShortUrl: string;
begin
  JSONObject := TJSONObject.ParseJSONValue(Memo1.Text) as TJSONObject;
  ShortUrl := JSONObject.Get('id').JsonValue.Value;
  JSONObject.Free;

  Memo1.Lines.Add(ShortUrl);
end;
处理JSON格式数据的类在Data.DBXJSON单元中。
添加要使用的Data.DBXJSON单元。

使用TJSONObject的ParseJSONValue方法解析JSON字符串。
我知道这是键/值对格式,因此我将其转换为TJSONObject。

获取的缩短的URL被添加到Memo1。

生成项目后,将SSL所需的DLL复制到与创建它的应用程序相同的文件夹中。

运行该程序,然后单击Button1,Button2。

运行应用程序

相关阅读 >>

Delphi android检查互联网连接

Delphi 指针入门知识

Delphi 掌控pagecontrol中的右上方的左右箭头事件

Delphi word文档内容批量替换

Delphi 合并两个 wav 文件流的函数

Delphi directx简单应用

Delphi xe 提权代码

Delphi checklistbox用法

Delphi xe filesizebyname 要引用哪些文件

Delphi 如何从html格式的字符串中提取纯文本?

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...