2017-09-26 8 views
0

AlamoFire 4.5 スウィフト4(私のプロジェクトは)Alamofire:iOS版でのエラードメイン= NSPOSIXErrorDomainコード= 100「プロトコルエラー11

は、私は唯一の11は

だから私は最近に始まっiOS版でこのバグを取得する実行作業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 
      } 
} 

EDIT:

私もちょうど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とプロトコルのエラーを得ました。

MacOS High SierraのSafariでこのエラーが発生する。

+0

[エラードメイン= NSPOSIXErrorDomainコード= 100「プロトコルエラー」]の可能な複製を(https://stackoverflow.com/questions/41461481/error-domain-nsposixerrordomain-code-100-protocol-error) –

+0

@DávidPhsztorヘッダーは正常ですが、GETには本文がありません。 – boidkan

+0

@DávidPásztorまた、私は自分の質問で述べたように、ヘッダーにnilを渡すとエラーになります。 – boidkan

答えて

0

私はリンゴを通過して助けを得ました。ここに彼らの応答がありました:

サーバは応答の中に "upgrade"ヘッダを送ります。これは、http要求で使用され、内部実装によって応答ヘッダーとして許可されていないヘッダーです。ヘッダーに別の名前を付けたり使用したりすると(この情報が依然としてクライアントに渡される必要がある場合)、問題が解決されます。

Apacheは、クライアントにhttp/2にアップグレードするように伝えるヘッダにupgradeと応答することが判明しました。ただし、SSL/TLSが使用されている場合は破損しています。ここにApacheのbugzillaに関する議論があります。また、クライアントがhttp/2を使用していても、upgradeヘッダが常に送信されているように見えます。

あなたがホストの設定でこれを入れてのApacheのヘッダを削除することができます。

Header unset Upgrade

関連する問題