获取NSString的一部分

时间:2011-09-03 04:34:45

标签: objective-c url nsstring url-shortener goo.gl

在我正在创建的应用程序中,我现在使用goo.gl的url shortener api来缩短网址。我有它几乎工作,我可以发送longUrl来检索NSString中的短一个,但它是这种格式:

  

{
   “kind”:“urlshortener#url”,
   “id”:“http://goo.gl/something”,
   “longUrl”:“http:// somethinglonggggg /”
  }

我只是想知道是否有办法从中获取id(短网址)。

这是我到目前为止所拥有的:

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;

1 个答案:

答案 0 :(得分:2)

你明确需要将其转换为NSDictionary(JSON语法用于字典或对象,但是你想要调用它。

Objective-C的Google API支持JSON解析,将响应转换为对象。

你可以找到它here

如果您只需要解析JSON,我建议JSONkitTouchJSON

他们都以非常相似的方式工作,你给他们字符串,他们会给你回来的对象。

有关库的个别用法的信息可以在相应项目的自述文件中找到,您将发现它们的易用性。

然后您将使用以下方式访问不同的值:

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

这是与REST服务交互的最佳方式。

希望它有所帮助!