Мне было интересно, как мне обработать следующий параметр PUT
запрос? Как мне сохранить параметр (при условии использования NSDictionary
) так что я могу отправить его на сервер с запущенным php. Любые советы или предложения приветствуются.
curl -X PUT -d {"questions":[{"type":"control_head" }]}
постскриптум выше то, что дал мне документ API. {"questions":[{"type":"control_head" }]}
это параметр, который мне нужно использовать на тот случай, если вы этого не поняли.
Если сделать это самостоятельно, вы бы создали NSMutableURLRequest
объект, измените его, как предложено вашим curl
(например. PUT
запрос, тело JSON и т. д.), а затем инициируйте запрос с помощью NSURLConnection
или же NSURLSession
,
Это дает что-то вроде:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"PUT";
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSDictionary *parameters = @{@"questions":@[@{@"type": @"control_head"}]};
NSError *error;
request.HTTPBody = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if (!data) {
NSLog(@"sendAsynchronousRequest error: %@", connectionError);
return;
}
// parse the response here; given that the request was JSON, I assume the response is, too:
NSError *parseError;
id responseObject = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
if (!responseObject) {
NSLog(@"parsing response failed: %@", parseError);
NSLog(@"body of response was: %@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
return;
}
// now you can look at `responseObject`
}];
Вы можете упростить это дальше, используя библиотеку, как AFNetworking:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSDictionary *parameters = @{@"questions":@[@{@"type": @"control_head"}]};
[manager PUT:urlString parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
(Я не проверял синтаксис запроса AFNetworking, но это что-то в этом роде.)
Других решений пока нет …