[英]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.