gpt4 book ai didi

在 AFNetworking 中使用 URL 参数和 JSON 正文进行 POST

转载 作者:行者123 更新时间:2023-12-04 15:34:14 27 4
gpt4 key购买 nike

我想进行一个包含 URL 参数和 JSON 正文的 POST 调用:

URL http://example.com/register?apikey=mykey
JSON { "field" : "value"}

如何在 AFNNetworking 中同时使用两个不同的序列化程序?这是我缺少 URL 参数的代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:@"http://example.com/register" parameters:json success:^(AFHTTPRequestOperation *operation, id responseObject) {

最佳答案

我做一个post方法

/**
* Services gateway
* Method get response from server
* @parameter -> object: request josn object ,apiName: api endpoint
* @returm -> void
* @compilationHandler -> success: status of api, response: respose from server, error: error handling
*/
+ (void)getDataWithObject:(NSDictionary *)object onAPI:(NSString *)apiName withController:(UIViewController*)controller
:(void(^)(BOOL success,id response,NSError *error))compilationHandler {


controller = controller;
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

// set request type to json
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];


// post request to server
[manager POST:apiName parameters:object success:^(AFHTTPRequestOperation *operation, id responseObject) {

// NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:responseObject
options:0
error:&error];

//NSString *JSONString = [[NSString alloc] initWithBytes:[jsonData bytes] length:[jsonData length] encoding:NSUTF8StringEncoding];
////

// check the status of API
NSDictionary *dict = responseObject;
NSString *statusOfApi = [[NSString alloc]initWithFormat:@"%@"
,[dict objectForKey:@"OK"]];

// IF Status is OK -> 1 so complete the handler
if ([statusOfApi isEqualToString:@"1"] ) {

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
compilationHandler(TRUE,responseObject,nil);

} else {

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

NSArray *errorMessages = [responseObject objectForKey:@"messages"];
NSString *message = [errorMessages objectAtIndex:0];

[Utilities showAlertViewWithTitle:apiName message:message];

compilationHandler(FALSE,responseObject,nil);
}

} failure:^(AFHTTPRequestOperation *operation, NSError *error) {

NSString *message = [NSString stringWithFormat:@"%@",[error localizedDescription]];
NSLog(@"Message is %@", message);

NSString *errorMessage = [NSString stringWithFormat:@"%@",[error localizedDescription]];
if (!([message rangeOfString:@"The request timed out."].location == NSNotFound)) {
[Utilities showAlertViewWithTitle:apiName message:errorMessage];
}

compilationHandler(FALSE,errorMessage,nil);
}];

// For internet reachibility check if changes its state
[self checkInternetReachibility:manager];
}

**例如当我们调用服务时**
  // calling service gateway API
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
"field",@"value",
nil];
[self getDataWithObject:dict onAPI:KGet_Preferences withController:(UIViewController*)controller :^(BOOL success, id response, NSError *error) {

if( success ) {
NSMutableDictionary *data = [[response valueForKey:@"data"] valueForKey:@"preferences"];
compilationHandler(success,data,error);
} else {
compilationHandler(success,nil,error);
}
}];

关于在 AFNetworking 中使用 URL 参数和 JSON 正文进行 POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22851646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com