2012-02-22 5 views
0

내 itunes 제휴사 링크를 추적하기 위해 bit.ly를 사용하고 싶습니다. http://target.georiot.com에서 제휴사 링크를받습니다. 직접 연결을 반대 할 때 작동합니다 (iTunes로 이동). 하지만 조금씩 제휴사 링크를 단축하면 같은 페이지로 연결되지 않습니다. "....///phobos.apple.com/WebObjects HTTP"모든IOS 제휴사 링크가 bit.ly와 작동하지 않음

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]; 
    } 
} 

마지막 리디렉션 링크가 같이가 someting 간다 : 여기

은 Lite 버전 URL을 가져 오는 코드입니다 아이디어? 당신은 아마 URL 필요 감사

+0

마지막 리디렉션 링크가 내게 적합합니다. 어떻게 잘못 되었습니까? –

+0

Itunes로 보내면 원하는 페이지로 이동하지 않습니다. – user1078065

+0

원하는 페이지가 무엇입니까? apple.com에없는 무언가? –

답변

0

당신은 그냥 비트를 사용하여 시도 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]; 
+0

여기에 요점이 있습니다. 그러나 예를 들면 ... ... url = http % 3A % 2F % 2Fitunes.apple.com % 2Fbr % 2Fapp ... 들어가기 : ... url = http % 253A % 252F % 252Fitunes.apple.com % 252Fbr % 252Fapp ... 이걸 어떻게 다룰 줄 알아? 내가 같은 문제가 발생했기 때문에 묻습니다. – user1078065

+0

NSString * encodedURL = (NSString *) CFURLCreateStringByAddingPercentEscapes (NULL, (CFStringRef) longURL, NULL, ("CFStringRef) @"! * '(); : @ & = + $ , /?% # [] ", kCFStringEncodingUTF8); 이것은 문제를 해결했습니다. – user1078065

0

NSString 방법을 사용할 수 있습니다 bit.ly와하는 쿼리 문자열에 보내기 전에 longURL를 인코딩. 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", "데이터": { "long_url": "HTTP ://target.georiot.com/Proxy.ashx?grid=64 & 식 8i를/ET44NjHw offerid = 146,261 & & & TYPE = 3 하위 ID = 0 = 1,826 tmpid & & RD_PARM1 = HTTP : //itunes.apple.com/us "http://bit.ly/zR6uzb", "해시": "zR6uzb", "global_hash": "wFpgG2", "html", " new_hash ": 1}}

예상대로

결과 URL은 (이스케이프 /의를 제거한 후) 작동 : zR6uzb \

는 GeoRiot, 우리는 또한 최근에 관심을 가질 수있는 새로운 통합 URL 축약 서비스를 추가 한 \ bit.ly : HTTP 당신, 그러나 우리는 아직 API를 공개하지 않았습니다. 우리가 사용할 수있을 때이 기회를주기를 원한다면 저희에게 알려주십시오. 여기서 큰 이점은 bit.ly와 georiot 간의 추가 리디렉션이 제거되어 사용자의 응답 시간이 상당히 단축된다는 것입니다.

어쨌든, 원래 게시물 이후 잠시 있었으므로 잘하면이 사실을 알게되었습니다. 우리에게 알려주지 않으면 우리가 할 수있는 곳으로 도울 것입니다!

관련 문제