gpt4 book ai didi

ios - 错误域=NSPOSIXErrorDomain 代码=100 "Protocol error"

转载 作者:IT王子 更新时间:2023-10-29 05:23:23 31 4
gpt4 key购买 nike

我正在尝试使用 .get 方法调用使用 Alamofire 的服务。该请求没有什么特别的,没有参数,只有一个授权 header 。

我在这里有点生气,因为当我使用相同的 URL 和授权 token 在 postman 上运行它时请求工作正常,但是当我使用 Alamofire 运行我的应用程序代码时它返回此错误:

Error Domain=NSPOSIXErrorDomain Code=100 "Protocol error" UserInfo={NSErrorPeerAddressKey={length = 16, capacity = 16, bytes = 0x100201bbd83ad0b10000000000000000}, _kCFStreamErrorCodeKey=100, _kCFStreamErrorDomainKey=1}

我正在使用:

Alamofire.request("https://myserverURL", method: .get, parameters: [:], encoding: JSONEncoding.default, headers: ["Authorization":"myToken"])
.responseJSON {response in

guard response.result.error == nil else {
//HERE IS WHERE IS GOING IN WITH THE ERROR
}
}

任何想法将不胜感激或为我指明正确的方向:)

最佳答案

我在基础类 URLSession 中遇到了与您在 Cocoa 中完全相同的错误。经过几个小时的调试,问题出在 HTTP 请求正文中。

您真的应该尝试转储 HTTP 请求/响应正文 以查看是否存在格式错误的字段。例如,Content-LengthContent-Type 是对还是错?根据我的经验,如果这些必需的(基本) header 格式不正确,它可能无法工作,具体取决于您的操作系统或其他中间网络接受(例如代理、网关、服务器等)

我的错误是在方法 URLRequest.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type") 中放错了函数参数,结果是错误的Content-Type HTTP 字段。

但是,它适用于 macOS 10.12 但不适用于 12.11,因此您应该确保您的 HTTP 请求正文没有格式错误

希望对您有所帮助。


根据您的示例代码,我猜 encoding: JSONEncoding.default 是错误的。由于HTTP GET 方法没有正文,严格/不稳健的网络组件会拒绝/不理解它。

您的目标是在请求 header 中设置 Accept: application/json,但是如果您确定响应正文类型则不需要。

关于ios - 错误域=NSPOSIXErrorDomain 代码=100 "Protocol error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41461481/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com