1

現在作成中のアプリでは、goo.gl の URL Shorter API を使用して URL を短縮しています。私はそれをほぼ機能させています。longUrl を送信して NSString の短いものを取得できますが、次の形式になっています。

{
"kind": "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;
4

1 に答える 1

2

それを確実にNSDictionaryに変換する必要があります(JSON構文は辞書またはオブジェクト用ですが、呼び出したい.

Objective-C 用の Google API は、JSON 解析をサポートして、応答をオブジェクトに変換します。

ここで見つけることができます。

JSON の解析だけが必要な場合は、JSONkitまたはTouchJSONをお勧めします。

どちらも非常によく似た方法で機能します。文字列を渡すと、オブジェクトが返されます。

ライブラリの個々の使用法に関する情報は、それぞれのプロジェクトの readme で見つけることができます。そこでは、それらがいかに簡単に使用できるかがわかります。

次に、次を使用してさまざまな値にアクセスします。

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

これは、REST サービスと対話するための最良の方法です。

それが役に立てば幸い!

于 2011-09-03T07:51:13.880 に答える