2017-09-26 96 views
0

運行AlamoFire 4.5 斯威夫特4(我的項目)Alamofire:錯誤域= NSPOSIXErrorDomain代碼= 100「協議差錯在iOS的11

我只得到了這個bug在iOS的11

所以我最近開始得到這個錯誤不停止了工作API端點:

Error Domain=NSPOSIXErrorDomain Code=100 "Protocol error" UserInfo={NSErrorPeerAddressKey=<CFData 0x1c40913f0 [0x1b2c04240]>{length = 16, capacity = 16, bytes = 0x100201bb36aec68a0000000000000000}, _kCFStreamErrorCodeKey=100, _kCFStreamErrorDomainKey=1}

這是的JIST如何,我提出要求:

let urlPath = "SOME_PATH" 
var params = [String:Any]() 
params["app_version"] = version 
params["apnsEnabled"] = apnsEnabled 
params["ios_version"] = DeviceInfo.getIOSVersion() 
params["model_name"] = UIDevice.current.modelName 

let request = AFSessionManager.shared.manager.request(urlPath, method: HTTPMethod.get, parameters: params as Parameters, headers: ["requested-domain":ServerDomain.get()!] as HTTPHeaders) 

request.responseJSON{ response in 
      if response.result.error == nil{ 
       //DO STUFF    
      }else{ 
       //HANDLE ERROR 
      } 
} 

編輯:

我也結束了只有URLSession嘗試此:

func ping(){ 

    let session = URLSession(configuration: URLSessionConfiguration.default) 

    let request = URLRequest(url: URL(string: "MY_PING_URL_STRING")!) 

    let task: URLSessionDataTask = session.dataTask(with: request) { (data, response, error) -> Void in 

     guard error == nil else { 
      //Handle Error 
      return 
     } 

     //DO STUFF 
    } 
    task.resume() 
} 

仍然只是URLSession拿到了協議錯誤。

另外,在Safari上MacOS High Sierra出現此錯誤。

+0

的可能的複製[錯誤域= NSPOSIXErrorDomain代碼= 100 「協議錯誤」](https://stackoverflow.com/questions/41461481/error-domain-nsposixerrordomain-code-100-protocol-error) –

+0

@DávidPásztor頭文件很好,GET沒有任何內容。 – boidkan

+0

@DávidPásztor另外,正如我在我的問題中指出的那樣,當傳遞nil頭部時也會出錯。 – boidkan

回答

0

我經歷了蘋果,並得到了一些幫助。這是他們的迴應:

服務器在響應中發送「升級」標頭。這是在http請求中使用並且不被我們的內部實現作爲響應頭的頭部。爲標題刪除或使用不同的名稱(如果仍然需要將該信息傳遞給客戶端)將解決該問題。

事實證明,跟Apache upgrade在頭告訴客戶端升級到HTTP/2響應。但是,在使用SSL/TLS時會中斷。這裏是關於Apache的bugzilla的討論。它也看起來像upgrade標題總是被髮送,即使客戶端使用http/2。

您可以通過將此在宿主配置除去了Apache頭:

Header unset Upgrade

相關問題