Domanda

I am trying to send a Google Places API request using AFNetworking.

I have the following code:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setRequestSerializer:[AFJSONRequestSerializer serializer]];
[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:OPIA_USERNAME password:OPIA_PASSWORD];
[manager.requestSerializer setValue:API_HEADER_RESPONSE_FORMAT forHTTPHeaderField:@"Accept"];
[manager setResponseSerializer:[AFJSONResponseSerializer serializer]];

parameters = @{@"key": GOOGLE_API_BROWSER_KEY, @"location": "-27.476383,153.014786", @"radius": [NSString stringWithFormat:@"%i", GOOGLE_PLACES_SEARCH_RADIUS], @"sensor": @"true", @"keyword": type, @"opennow": @"true", @"rankby": @"distance"};
requestURL = [NSString stringWithFormat:@"%@%@", GOOGLE_PLACES_API_URL, API_RESPONSE_FORMAT];
[manager GET:requestURL parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {

It generates a URL like this:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?key=XXXX&keyword=coffee&location=-27.476383%2C153.014786&opennow=true&radius=100&rankby=distance&sensor=true.

As you can see, the "," in the location parameter is being encoded by AFNetworking.

I am using AFNetworking 2.0.

È stato utile?

Soluzione

I use ut this way like this:

NSString* urlString = [NSString stringWithFormat:GOOGLE_PLACES_API_JSON, latitude,longitude, radius, types];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:urlString
      parameters:nil
         success:^(AFHTTPRequestOperation *operation, id responseObject) {
             //do stuff
         }
         failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             //show error
         }];

Altri suggerimenti

I had to move away from the "parameters" approach, and instead manipulate the URL string.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top