2016-09-19 25 views
2

NSURLSession請求HTTP/2.0iOS10 NSURLSession HTTP/2無效

可在iOS9中使用。

enter image description here

但無效在iOS10

enter image description here

我的代碼:



    NSURLSession *session = [NSURLSession sharedSession]; 
    request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://ga.seeyouyima.com/page"]]; 
    [request setHTTPMethod:@"POST"]; 
    [[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
     if (completedBlock) { 
      completedBlock(data, response, error); 
     } 
    }] resume]; 

+1

您的代碼是必需的。 –

+0

可能是證書配​​置有問題。我有類似的[問題](http://stackoverflow.com/q/39544547/3871718)。 – new2ios

+0

服務器證書使用TLSv1.2。 –

回答

7

它看起來像查爾斯代理4會導致iOS的10不使用HTTP/2。這似乎很好地工作與iOS 9

可以通過加載在移動Safari Akamai的HTTP/2演示iOS中10證明這一點:

https://http2.akamai.com/demo

如果啓用查爾斯代理在訪問該網站它會向您報告您的瀏覽器不支持HTTP/2。

+0

這是正確的答案。 Charles Proxy 4使iOS 10不使用HTTP/2。如果您需要使用Charles Proxy 4嗅探HTTP/2請求,請使用iOS 9。 – ccoroom

+0

此外,對於那些想知道的人,iOS 9模擬器可以爲此工作。 –

+0

我與使用HTTP 2的Charles和NSURLSession具有相同的行爲,但如果奇怪的話,這種行爲很有用。爲什麼Charles會在代理其他HTTP 2請求(例如curl)時成功地使HTTP 2失敗? – Jan