簡體   English   中英

應用程序在iOS中崩潰了sendSynchronousRequest

[英]app crashed sendSynchronousRequest in ios

我不知道為什么我的應用程序在此行崩潰

NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

這是我的代碼:

NSString * urlString = [[NSUserDefaults standardUserDefaults] objectForKey:MAINURL];

NSHTTPURLResponse * response;
NSError * error;
NSMutableURLRequest *request;

request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString]
                                    cachePolicy:NSURLRequestReloadIgnoringCacheData
                                   timeoutInterval:120];

if([[[NSUserDefaults standardUserDefaults] objectForKey:@"callWebServiceFor"] isEqualToString:nil]) {
    // [request setValue:[NSString stringWithFormat:@"%d", [postData length]] forHTTPHeaderField:@"Content-Length"];

    NSString * strSessionId = [[NSUserDefaults standardUserDefaults] objectForKey:@"sessionId"];
    if(strSessionId != nil)
        [request setValue:strSessionId forHTTPHeaderField:@"Cookie"];
}
NSData * data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
// Storing session headers when user logs in successfully
if([[[NSUserDefaults standardUserDefaults] objectForKey:@"callWebServiceFor"] isEqualToString:@"login"]) {
    NSArray * all = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:urlString]]; //testing
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookies:all forURL:[NSURL URLWithString:urlString] mainDocumentURL:nil];
    NSString * strSessionId;
    for (NSHTTPCookie *cookie in all) {
        strSessionId = [[NSString alloc] initWithString:cookie.value];
        //  NSLog(@"Session value: %@",cookie.key];
        //  NSLog(@"Session value: %@",strSessionId);
    }
    [[NSUserDefaults standardUserDefaults] setObject:strSessionId forKey:@"sessionId"];
    [[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"callWebServiceFor"];
}
if (data != nil) {
    dispatch_async(kBackGroudQueue, ^{
        [self performSelectorOnMainThread:@selector(handleWebServiceResponse:)
                               withObject:data waitUntilDone:YES];
    });
} else {
    [SwapweekUtilViewController showAlert:@"Internet" :@"Check your Internet Connection"];
}

我看不到您的代碼為何在NSURLConnection sendSynchronousRequest:崩潰,並且您尚未發布NSURLConnection sendSynchronousRequest:以驗證這一事實,但是此代碼可能會崩潰(如果strSessionIdnil ):

 [[NSUserDefaults standardUserDefaults] setObject:strSessionId forKey:@"sessionId"];

並且此代碼崩潰:

[[NSUserDefaults standardUserDefaults] setObject:nil forKey:@"callWebServiceFor"];

(使用removeObjectForKey:從“用戶默認值”中刪除一個對象。)

這也很差:

if([[[NSUserDefaults standardUserDefaults] objectForKey:@"callWebServiceFor"] isEqualToString:nil]) {

(改為測試[NSString length] == 0 。)

這也很糟糕:

for (NSHTTPCookie *cookie in all) {
    strSessionId = [[NSString alloc] initWithString:cookie.value];
    //  NSLog(@"Session value: %@",cookie.key];
    //  NSLog(@"Session value: %@",strSessionId);
}

break一旦你有一個非空strSessionId ,只是做strSessionId = cookie.key;而不是說initWithString )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM