2016-05-31 42 views
3

Android的源iOS中的Android 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(); 

它運作良好。我在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); 
      }]; 

它的工作原理壞。沒有迴應。 在iOS中,Android OkHttpClient newCall()的等效功能是什麼?

+0

您是否禁用了應用程序傳輸安全性?您應該檢查傳遞給完成處理程序的錯誤值。有機會說「由於App Transport Security策略需要使用安全連接,因此無法加載資源」 – Paulw11

+0

App Transport Security沒有問題。 –

+0

您是否檢查過「錯誤」?如果我使用https網址,那麼你的代碼適用於我的'https:// www.google.com' – Paulw11

回答

1

我使用NSURLConnection解決了這個問題。並由此代表獲取響應數據。

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
相關問題