1

API アドレス: http://suggest.taobao.com/sug?area=etao&code=utf-8&callback=KISSY.Suggest.callback&q=iphone

リターン:</p>

KISSY.Suggest.callback({"result": [["iphone4s", "9809"], ["iphone5", "13312"], ["iphone4 手机", "69494400"], ["iphone5 港行", "14267"], ["iphone5三网", "2271160"], ["iphone4手机壳", "6199679"], ["iphone 5手机壳", "2527284"], ["iphone 5 保护壳", "5727586"], ["iphone 4贴膜", "147271"], ["iphone5壳", "2628540"]]})


NSURL * url = [NSURL URLWithString:@"http://suggest.taobao.com/sug?area=etao&code=utf-8&callback=KISSY.Suggest.callback&q=iphone"];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

NSHTTPURLResponse* urlResponse = nil;

NSError * error = nil;

NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

NSData *date = [NSData alloc]init

SBJsonParser *jsonParser = [[SBJsonParser alloc] init];


// NSMutableArray *array=[NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableLeaves error:&error];
    NSMutableArray *array = [jsonParser objectWithData:responseData];

    NSLog(@"%@",array);

この配列はヌルです。理由はわかりません。

4

3 に答える 3

1

リクエストURLを参照すると、コールバックが含まれています。それを保持すると、レスポンスとしてjsonが返されないため、URLから「&callback=KISSY.Suggest.callback」を削除します

// Make sure you have include SBJSON files in your Project, as well you have imported header in your View Controller
#import "JSON.h"

// your request URL
NSURL * url = [NSURL URLWithString:@"http://suggest.taobao.com/sug?area=etao&code=utf-8&q=iphone"];

// URL Request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

NSHTTPURLResponse* urlResponse = nil;

NSError * error = nil;

// initiate Request to get Data
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error];

// Encode your Response
NSString *content = [[NSString alloc] initWithBytes:[responseData bytes] length:[responseData length] encoding:NSUTF8StringEncoding];

// Now read a Dictionary from it using SBJSON Parser
NSDictionary *responseDict = [content JSONValue];

NSLog(@"Response [%@]",responseDict);
于 2013-03-28T06:39:27.747 に答える
0

編集済み

http://suggest.taobao.com/sug?area=etao&code=utf-8&callback=KISSYの代わりにhttp://suggest.taobao.com/sug?area=etao&code=utf-8&q=iphoneを使用するだけです。 Suggest.callback&q=iphone所有のコードは動作します..

于 2013-03-28T06:08:10.843 に答える
0

私は SBJsonParser に詳しくありませんが、返される文字列の形式は JSON ではなく JSONP のように見えます。単にラッパー呼び出しを一掃するだけで、あなたが求めているものが得られると思います。

また、応答の「ルート」は配列ではなく辞書であることに注意してください。

{"result": [[...

コードは次のようになります。

NSDictionary *response = //... decode
NSArray *results = [response objectForKey:@"result"];
于 2013-03-28T05:43:56.283 に答える