2017-09-26 307 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