[英]NSMutableURLRequest setHTTPBody method crashes App with SIGABRT Warning
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"riderfinder.appspot.com/login"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/plain"
forHTTPHeaderField:@"Content-type"];
NSString *body = @"username=";
[body stringByAppendingString:accountEntered];
[body stringByAppendingString:@"&"];
[body stringByAppendingString:@"password="];
[body stringByAppendingString:passwordEntered];
NSMutableData *data = [[NSMutableData data] initWithString:body];
//Crashes everything with "SIGABRT" warning/error. Nothing else is said.
[request setHTTPBody:data];
如果有人知道出了什么问题,我将不胜感激。 我将其范围缩小到通过苹果的调试器导致崩溃的最后一行。 非常感谢你!
有两个错误:
体不追加, [body stringByAppendingString:accountEntered]
应为body=[body stringByAppendingString:accountEntered]
NSMutableData *data = [[NSMutableData data] initWithString:body];
使用不正确,可以使用NSData *data=[body dataUsingEncoding:NSUTF8StringEncoding];
所以我修改了代码:
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"riderfinder.appspot.com/login"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"text/plain" forHTTPHeaderField:@"Content-type"];
NSString *body = @"username=";
body=[body stringByAppendingString:accountEntered];
body=[body stringByAppendingString:@"&"];
body=[body stringByAppendingString:@"password="];
body=[body stringByAppendingString: passwordEntered];
//NSMutableData *data = [[NSMutableData data] initWithString:body];
NSData *data=[body dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
首先,您应该使“ accountEntered”和“ passwordEntered”不为零。 如果执行了此操作,则应设置断点以确切地知道哪条线崩溃。通常,“ SIGABRT”错误表示您释放了更多或无法识别的选择器。 答案1上的代码正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.