Android okhttp 在 iOS 中相当于什么?

Jon*_*ark 5 android nsurlconnection ios okhttp

安卓源码

String url = "http://www.example.com";
OkHttpClient client = clientBuilder.build();
Request request = new Request.Builder()
                    .url(url)
                    .addHeader("Host", "api.example.com")
                    .addHeader("Referer", "http://www.examplegood.com/")
                    .build();

Response response = client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)

效果很好。我尝试在 iOS 中使用 NSURLConnection 请求。

iOS源码

NSString *url = @"http://www.example.com";
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setValue:@"api.example.com" forHTTPHeaderField:@"Host"];
[request setValue:@"http://www.examplegood.com/" forHTTPHeaderField:@"Referer"];
[request setURL:[NSURL URLWithString:url]];
[request setHTTPMethod: @"GET"];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
                NSMutableData *result = [[NSMutableData alloc] init];
                [result appendData:data];

                NSString* resultStr = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
                NSLog(@"result:%@",resultStr);
            }];
Run Code Online (Sandbox Code Playgroud)

效果不好。没有回应。Android OkHttpClient newCall() 在 iOS 中相当于什么?

Jon*_*ark 1

我使用 NSURLConnection 解决了这个问题。并通过该委托获取响应数据。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
Run Code Online (Sandbox Code Playgroud)