2011-09-03 240 views
1

在我的應用程序中,我創建了現在我使用goo.gl的URL縮短器api來縮短網址。我已經幾乎工作,我可以發送longUrl來檢索一個NSString的短期之一,但它的格式如下:獲取NSString的一部分

{
「種」:「urlshortener#URL」,
「ID」: 「http://goo.gl/something」,
「longUrl」: 「HTTP:// somethinglonggggg /」
}

我只是想知道,如果有一種方法只取的ID(短url)。

這裏是我到目前爲止:

NSString *longURL = urlText.text; 
NSData *reqData = [[NSString stringWithFormat:@"{\"longUrl\":\"%@\"}", longURL] dataUsingEncoding:NSUTF8StringEncoding]; 

NSMutableURLRequest *request = [NSMutableURLRequest 
           requestWithURL:[NSURL URLWithString:@"https://www.googleapis.com/urlshortener/v1/url"] 
           cachePolicy:NSURLRequestUseProtocolCachePolicy 
           timeoutInterval:20]; 
[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:reqData]; 

NSError *err = [[NSError alloc] init]; 
NSData *retData = [NSURLConnection sendSynchronousRequest:request 
             returningResponse:nil 
                error:&err]; 

if([err domain]) return; 

NSString *retString = [[NSString alloc] initWithData:retData encoding:NSUTF8StringEncoding]; 

if([retString rangeOfString:@"\"error\""].length) return; 

NSLog(@" longUrl equals %@ ", longURL); 
NSLog(@" retString equals %@ ", retString); 

urlText.text = retString; 
+0

你確定返回的值確實是一個字符串,而不是字典嗎?它似乎是一本字典。 – EmptyStack

+0

嗯,我不確定是誠實的,當我做了

+0

其實它絕對是一個字符串,我試圖將它設置爲一個字典,並不會工作。 –

回答

2

您defenitively需要將其轉換成一個NSDictionary(即JSON語法是一本字典,或對象,無論你怎麼稱呼它

的Objective-C中的谷歌API支持JSON解析打開響應爲對象。

你可以找到它here

如果你只需要解析JSON,我會推薦JSONkitTouchJSON

他們都以非常相似的方式工作,你給他們的字符串,他們會給你回物體。

可以在相應項目的自述文件中找到各個庫的使用信息,在那裏您會發現它們的使用方式非常簡單。

你會然後使用存取權限的不同的值:

NSString *short URL = [object valueForKey:@"id"]; 

這與REST服務交互的最佳方式。

希望它能幫助!

+0

這工作完美:) –

+0

我很高興它幫助,請接受答案,如果它解決了你的問題,並告訴我,如果你需要任何更多的幫助! – Zebs