公司項(xiàng)目中遇到過一個(gè)問題 ,在程序點(diǎn)擊home建退到后臺(tái)的時(shí)候,要給服務(wù)器發(fā)份請求,用到了AFN, 代碼走到block的時(shí)候就不走了,也不知道什么問題,后來查了些資料發(fā)現(xiàn),異步請求在- (void)applicationDidEnterBackground:(UIApplication *)application {}中不行 因?yàn)檎埱蠼Y(jié)果回調(diào)不過來.所以改成同步請求,問題來了,做開發(fā)兩年,說時(shí)候都沒寫過同步請求 ,哈哈 afn也沒有封裝同步請求,所以決定用ios原生的同步post請求 上代碼 ,
- (NSDictionary *)postUrl:(NSString *)urlstring NSString:(NSString *)body {
//獲取網(wǎng)址
//創(chuàng)建URL
NSURL *url = [NSURL URLWithString:urlstring];
//創(chuàng)建請求requset
NSMutableURLRequest *requset = [NSMutableURLRequest requestWithURL:url];
//設(shè)置請求方式
//默認(rèn)是GET請求
[requset setHTTPMethod:@"POST"];
//設(shè)置 body 內(nèi)容
//? ? ? ? ? ? ? ? NSDictionary *dic = @{@"cashier":[[NSUserDefaults standardUserDefaults] objectForKey:@"JQH"],@"content":desString};
//string轉(zhuǎn)data
NSData *data = [body dataUsingEncoding:NSUTF8StringEncoding];
//把data添加實(shí)在請求中
[requset setHTTPBody:data];
//創(chuàng)建鏈接
NSURLResponse *response = nil;
NSError *error = nil;
NSData? *responseData = [NSURLConnection sendSynchronousRequest:requset returningResponse:&response error:&error];
if (error) {
NSLog(@"error:%@", error);
}
//下面用到了是des加密 如果不用解密之類的 可以忽略不接responseData就是請求結(jié)果
NSString *aString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
NSString *jiemi = [DES decryptWithText:aString];
NSDictionary *dic = [NSDictionary dictionary];
dic = [self dictionaryWithJsonString:jiemi];
return dic;
}