IOS会员链接缩短了bit.ly无法正常工作

时间:2012-02-22 21:26:01

标签: ios hyperlink url-shortener bit.ly affiliate

我想用bit.ly跟踪我的itunes联盟链接。 我从http://target.georiot.com获得了联盟链接。 它在操作直接链接(转到itunes)时有效。 但是当我用bitly缩短会员链接时,它不会出现在同一页面上。

以下是获取缩短网址的代码:

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 / ....”

任何想法? 感谢

2 个答案:

答案 0 :(得分:0)

在将查询字符串发送到bit.ly

之前,您可能需要对longURL进行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];

答案 1 :(得分:0)

我刚尝试使用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.georiot.com%2FProxy.ashx%3Fgrid%3D64%26id%3D8i%2FET44NjHw%26offerid%3D146261%26type%3D3%26subid%3D0%26tmpid%3D1826%26RD_PARM1%3Dhttp%3A%2F%2Fitunes.apple.com%2Fus%2Falbum%2Fmetallica%2Fid278116714%3Fuo%3D4%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&offerid = 146261&amp; type = 3&amp; subid = 0&amp; tmpid = 1826&amp; RD_PARM1 = http://itunes.apple.com/us/album/metallica/id278116714?uo = 4&amp; partnerId = 30 /“,”url“:” http://bit.ly/zR6uzb“,”hash“:”zR6uzb“,”global_hash“:”wFpgG2“,”new_hash“:1}}

结果url按预期工作(删除转义符后):http:\ bit.ly \ zR6uzb

在GeoRiot,我们最近还添加了一个新的集成网址缩短器,您可能会感兴趣,但我们还没有公开它的API。如果您有兴趣在我们有空的时候给它一个机会,请告诉我们。这里的最大好处是可以删除bit.ly和georiot之间的额外重定向,从而加快了用户的响应时间。

无论如何,自原帖以来已经有一段时间了,所以希望你能解决这个问题。如果不告诉我们,我们会尽力帮助您!