http 请求
ios 9之后苹果不建议用 http 来请求,不过可以设置 http 的请求。
请求方式如下:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
加上这个就可以 http 请求了。
AF 请求
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager manager] initWithBaseURL:URL(kHostUrl)
sessionConfiguration:config];
//添加单项的 https
manager.securityPolicy.allowInvalidCertificates = YES;
manager.securityPolicy.validatesDomainName = NO;
//设置 请求参数和返回数据格式
manager.responseSerializer = [AFJSONResponseSerializer serializer];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.requestSerializer.timeoutInterval = 60; // 超时时间
// 请求头
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",
@"text/json", @"text/javascript", @"text/html",@"text/plain",@"charset/UTF-8",nil];
DLog(@"\n\n~~接口参数:~~%@",dic);
// post 方式请求
[manager POST:@"services/requestsreq/"
parameters:dic
progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSString *jsonString = nil;
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:responseObject
options:NSJSONWritingPrettyPrinted
error:&error];
// 打印原始数据(汉字没有被转移)
jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSHTTPURLResponse *response = (NSHTTPURLResponse *)task.response;
DLog(@"statusCode = %ld",(long)response.statusCode); // http code
}];