我想使用bit.ly来跟踪我的itunes联盟链接。我从获得联盟链接http://target.georiot.com.它在拒绝直接链接(转到itunes)时有效。但是当我用bitly缩短联盟链接时,它不会出现在同一页面上。
以下是获取缩短url的代码:
NSString *longURL = link;
NSString *bitlyRequestURLString = [NSString stringWithFormat:@"http://api.bit.ly/shorten?version=2.0.1&format=xml&login=%@&apiKey=%@&longUrl=%@",
@"myappname",
@"myappidentifier",
longURL];
NSURL *bitlyURL = [NSURL URLWithString:bitlyRequestURLString];
// get the short URL from bit.ly
NSError *error;
NSString *response = [NSString stringWithContentsOfURL:bitlyURL encoding:NSUTF8StringEncoding error:&error];
NSString *shortURL = @"";
NSArray *responseParts = [response componentsSeparatedByString:@"<shortUrl>"];
if ([responseParts count] > 1) {
NSString *responsePart = [responseParts objectAtIndex:1];
responseParts = [responsePart componentsSeparatedByString:@"</shortUrl>"];
if ([responseParts count] > 0) {
shortURL = [responseParts objectAtIndex:0];
}
}
最后一个重定向链接类似于"http://phobos.apple.com/WebObjects/...."
有什么想法吗?感谢
在将查询字符串中的longURL发送到bit.ly 之前,您可能需要对其进行URL编码
您可以使用NSString
方法stringByAddingPercentEscapesUsingEncoding:
NSString *longURL = [link stringByAddingPercentEscapesUsingEncoding:
NSASCIIStringEncoding];
NSString *bitlyRequestURLString = [NSString stringWithFormat:@"http://api.bit.ly/shorten?version=2.0.1&format=xml&login=%@&apiKey=%@&longUrl=%@",
@"myappname",
@"myappidentifier",
longURL];
我刚刚尝试使用bit.ly REST API创建一个短url,返回的url按预期工作,请参阅下文。看起来之前的答案表明编码是针对目标的,而标准的url编码(百分比编码,例如http://meyerweb.com/eric/tools/dencoder/)似乎奏效了。
此调用(使用正确的API密钥):https://api-ssl.bitly.com/v3/shorten?login=georiot&apiKey=R_MY_API_KEY_HERE&longUrl=http%3A%2F%2Ftarget.geoiot.com%2FProxy.ashx%3Fgrid%3D64%26id%3D8i%2FET44NjHw%26offerid%3D146261%26type%3D26subid%3D0%26tmid%3D1826%26RD_PARM1%3Dhttp%3A+2F%2Fitunes.apple.com%2Fus%2Falbum%2Fmetallica%2Fid278116714%3Fo%3%4%26partnerId%3D30%2F&format=json
返回:{"status_code":200,"status.txt":"OK","data":{"long_url":"http://target.georiot.com/Proxy.ashx?grid=64&id=8i/ET44NjHw&报价=146261&type=3&subid=0&tmpid=1826&RD_PARM1=http://itunes.apple.com/us/album/metallica/id278116714?uo=4&partnerId=30/","url":"http://bit.ly/zR6uzb","hash":"zR6uzb","global_hash":"wFpgG2","new_hash":1}}
结果url按预期工作(删除escape/后):http:\bit.ly\zR6uzb
在GeoRiot,我们最近还添加了一个新的集成url shortener,这可能会引起你的兴趣,但我们还没有公开它的API。如果你有兴趣在我们有货的时候尝试一下,请告诉我们。这里的最大好处是,bit.ly和georiot之间的额外重定向将被删除,大大加快了用户的响应时间。
不管怎样,距离最初的帖子已经有一段时间了,所以希望你能弄清楚这一点。如果不告诉我们,我们会尽我们所能提供帮助!