Партнерская ссылка IOS сокращена с bit.ly не работает - PullRequest
0 голосов
/ 23 февраля 2012

Я хочу использовать 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/...."

Любые идеи? Спасибо

Ответы [ 2 ]

0 голосов
/ 04 марта 2012

Я только что попробовал использовать bit.ly REST API для создания короткого URL, и возвращенный URL работает как положено, см. Ниже. Похоже, что предыдущий ответ предполагал, что кодировка была на цели, и стандартное кодирование URL (процентное кодирование, такое как http://meyerweb.com/eric/tools/dencoder/), похоже, помогает.

Этот вызов (с правильным ключом API): https://api -ssl.bitly.com / v3 / укоротить? Войти = 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 & формат = 1007 * JSON *

Возвращается: {"status_code": 200, "status_txt": "OK", "data": {"long_url": "http://target.georiot.com/Proxy.ashx?grid=64&id=8i/ET44NjHw&offerid=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, которая может вас заинтересовать, однако мы еще не представили API для нее. Если вы заинтересованы в том, чтобы сделать этот снимок, когда он у нас есть, сообщите нам. Большим преимуществом здесь является то, что дополнительная переадресация между bit.ly и georiot будет удалена, что значительно ускорит время отклика для ваших пользователей.

Во всяком случае, прошло уже много времени с момента первоначального сообщения, так что, надеюсь, вы поняли это. Если нет, дайте нам знать, и мы поможем, где сможем!

0 голосов
/ 23 февраля 2012

Возможно, вам нужно URL кодировать свой longURL перед отправкой в ​​строке запроса на bit.ly

Вы можете использовать метод 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];
...