Ios AFNetworking POST无法返回json数据
我想用POST方法发出请求,然后我想让他们返回json数据或Ios AFNetworking POST无法返回json数据,ios,networking,post,response,afnetworking,Ios,Networking,Post,Response,Afnetworking,我想用POST方法发出请求,然后我想让他们返回json数据或NSDictionary,但他们只能在成功时返回字符串 像NSString*response=[operation responseString] 有人知道如何让它们返回NSdictionary而不是NSString -(IBAction)SubmitLogin:(id)sender{ NSLog(@"Login"); // NSLog(@"%@",username); //START FUNGSI UNTUK
NSDictionary
,但他们只能在成功时返回字符串
像NSString*response=[operation responseString]代码>
有人知道如何让它们返回NSdictionary
而不是NSString
-(IBAction)SubmitLogin:(id)sender{
NSLog(@"Login");
// NSLog(@"%@",username);
//START FUNGSI UNTUK POST, PUT, DELETE
AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:signinUrl];
[httpClient defaultValueForHeader:@"Accept"];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"someuser", @"username",
@"somepassword",@"password",
nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST"
path:@""
parameters:params];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];
[operation setCompletionBlockWithSuccess:
^(AFHTTPRequestOperation *operation,
id responseObject) {
NSString *response = [operation responseString];
NSLog(@"response: %@",response);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", [operation error]);
}];
//call start on your request operation
[operation start];
这就是我所使用的,请根据您的需要随意使用:
-(void) loginWithUserID:(NSString*)usrID User:(NSString*)usr Password:(NSString *)psw Sender:(id)sender
{
if ([sender respondsToSelector:@selector(startLoading)]){
[sender performSelector:@selector(startLoading)];
}
baseURL = [NSString stringWithFormat:
@"http://xxx.xxx.xxx.xxx/test/service.svc/weblogin"];
NSString* serviceURL = [NSString stringWithFormat:
@"%@?userID=%@&user=%@&password=%@",baseURL,usrID,usr,psw;
NSURL *url = [NSURL URLWithString:[serviceURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
self.LoginOK = [JSON valueForKeyPath:@"LoginOK"];
if (LoginOK.intValue == 1) {
NSDictionary *usrData = [JSON valueForKeyPath:@"userData"];
userData = [[UserData alloc]init];
[userData readFromJSONDictionary:usrData];
NSLog(@"Userdata: %@",userData);
if ([sender respondsToSelector:@selector(loginSuccessful:)])
{
[sender performSelector:@selector(loginSuccessful:)];
}
}else{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Error" message:@"No Correct Login Credentials" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alertView show];
;}
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
if ([sender respondsToSelector:@selector(stopLoading)]){
[sender performSelector:@selector(stopLoading)];
}
[[[UIAlertView alloc] initWithTitle:@"Error"
message:@"Loginservice not available! Check your connection!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil] show];
NSLog(@"Error: %@", error);
}];
[operation start];
};
编辑:哦,使用
-(void)readFromJSONDictionary:(NSDictionary *)d
{
[self setProperty1:[d objectForKey:@"property1"]];
}
方法将该字典中的所有属性放入自定义类。这就是我使用的,请根据您的需要随意调整:
-(void) loginWithUserID:(NSString*)usrID User:(NSString*)usr Password:(NSString *)psw Sender:(id)sender
{
if ([sender respondsToSelector:@selector(startLoading)]){
[sender performSelector:@selector(startLoading)];
}
baseURL = [NSString stringWithFormat:
@"http://xxx.xxx.xxx.xxx/test/service.svc/weblogin"];
NSString* serviceURL = [NSString stringWithFormat:
@"%@?userID=%@&user=%@&password=%@",baseURL,usrID,usr,psw;
NSURL *url = [NSURL URLWithString:[serviceURL stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
self.LoginOK = [JSON valueForKeyPath:@"LoginOK"];
if (LoginOK.intValue == 1) {
NSDictionary *usrData = [JSON valueForKeyPath:@"userData"];
userData = [[UserData alloc]init];
[userData readFromJSONDictionary:usrData];
NSLog(@"Userdata: %@",userData);
if ([sender respondsToSelector:@selector(loginSuccessful:)])
{
[sender performSelector:@selector(loginSuccessful:)];
}
}else{
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"Error" message:@"No Correct Login Credentials" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alertView show];
;}
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
if ([sender respondsToSelector:@selector(stopLoading)]){
[sender performSelector:@selector(stopLoading)];
}
[[[UIAlertView alloc] initWithTitle:@"Error"
message:@"Loginservice not available! Check your connection!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil] show];
NSLog(@"Error: %@", error);
}];
[operation start];
};
编辑:哦,使用
-(void)readFromJSONDictionary:(NSDictionary *)d
{
[self setProperty1:[d objectForKey:@"property1"]];
}
方法将该字典中的所有属性放入一个自定义类。我试图发送JSON对象并获取JSON数据并对其进行解析
NSURL *url = [NSURL URLWithString:@"https://MySite.com/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:url];
//[httpClient setParameterEncoding:AFJSONParameterEncoding];
//[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"Ans", @"name",
@"29", @"age", nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST"
path:@"/testJSONReturn.php"
parameters:params];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"DATA: %@", [JSON valueForKeyPath:@"data"]);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Request Failure Because %@",[error userInfo]);
}];
[operation start];
可能会有帮助我正在尝试发送JSON对象并获取JSON数据并对其进行解析
NSURL *url = [NSURL URLWithString:@"https://MySite.com/"];
AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:url];
//[httpClient setParameterEncoding:AFJSONParameterEncoding];
//[httpClient registerHTTPOperationClass:[AFJSONRequestOperation class]];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
@"Ans", @"name",
@"29", @"age", nil];
NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST"
path:@"/testJSONReturn.php"
parameters:params];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSLog(@"DATA: %@", [JSON valueForKeyPath:@"data"]);
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
NSLog(@"Request Failure Because %@",[error userInfo]);
}];
[operation start];
可能会有帮助谢谢你的回答和编辑我的问题,也很抱歉我的英语不好。我没有编辑你的问题Zoro,也不担心你的英语,这是可以理解的。希望这段代码能对您有所帮助,欢迎使用Stack Overflow:)。谢谢您的回答和编辑我的问题,也很抱歉我的英语不好。我没有编辑您的问题Zoro,也不担心您的英语,这是非常可以理解的。希望这段代码对您有所帮助,欢迎使用堆栈溢出:)。