繁体   English   中英

NSMutableURLRequest setHTTPBody方法使用SIGABRT警告使应用程序崩溃

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

如果有人知道出了什么问题,我将不胜感激。 我将其范围缩小到通过苹果的调试器导致崩溃的最后一行。 非常感谢你!

有两个错误:

  1. 不追加, [body stringByAppendingString:accountEntered]应为body=[body stringByAppendingString:accountEntered]

  2. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM