5

オンラインでチュートリアルに従っており、Google Places API にクエリを送信するメソッドが 2 つあります。残念ながら、応答を返そうとしていますが、機能していません。コードにいくつかのデバッグ番号があります。ただし、コードは次のとおりです。

-(void) queryGooglePlaces{
    NSString *url = @"https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=myKey";

    //Formulate the string as a URL object.
    NSURL *googleRequestURL=[NSURL URLWithString:url];
    NSLog(@"1.5");
    // Retrieve the results of the URL.
    dispatch_async(kBgQueue, ^{
        NSData* data = [NSData dataWithContentsOfURL: googleRequestURL];
        [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
    });
    NSLog(@"2");
}

-(void)fetchedData:(NSData *)responseData {
    //parse out the json data
    NSError* error;
    NSDictionary* json = [NSJSONSerialization 
                          JSONObjectWithData:responseData 

                          options:kNilOptions 
                          error:&error];

    //The results from Google will be an array obtained from the NSDictionary object with the key "results".
    NSArray* places = [json objectForKey:@"results"]; 

    //Write out the data to the console.
    NSLog(@"Google Data: %@", places);
    NSLog(@"3");
}

ログでは、出力は次のようになります。

2012-08-03 16:40:12.411 sCode[25090:1a303] 1.5
2012-08-03 16:40:12.411 sCode[25090:1a303] 2
2012-08-03 16:40:12.512 sCode[25090:1a303] 4
2012-08-03 16:40:12.751 sCode[25090:1a303] Google Data: (
)
2012-08-03 16:40:12.751 sCode[25090:1a303] 3
2012-08-03 16:40:13.628 sCode[25090:1a303] 1
2012-08-03 16:40:14.129 sCode[25090:1a303] 4

返信がなかったので、何が問題なのか誰か教えてもらえますか? [self queryGooglePlaces];はい、私は自分のメソッドを呼び出しましViewDidLoadた ヘルプの人に感謝します! 冗長すぎる場合は申し訳ありません..学習しようとしている初心者にすぎません!

4

1 に答える 1

2

提供されたコードを考えると、パーセント エスケープを追加して URL 文字列をエンコードする必要があると推測できます。このように作成してみてくださいurl...

NSString *url = @"https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&types=food&name=harbour&sensor=false&key=myKey";
url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

通常は 1 行にしますが、わかりやすくするために 2 行で示しています。これにより、これらの=&が適切にエスケープされた文字に変換され、有効な URL が提供されます。

于 2012-08-06T18:37:29.577 に答える