使用URLSession发起POST请求返回错误码999,求排查问题
排查URLSession POST请求返回未知错误的问题
咱们先从最显眼的地方排查起,你这段代码里有几个很容易忽略的问题,大概率是它们导致了服务器返回的{"isError":true,"ErrorMessage":"Unknown Error Occured","Result":{},"ErrorCode":999}错误:
1. URL格式错误(最可能的元凶)
你的请求URL写的是:
let url = URL(string: "http://192.168.1.21.2/FeatureRequestComponent/FeatureRequestComponentAPI")!
这里的IP地址部分192.168.1.21.2是无效格式——合法的IPv4地址是四段数字,你这里多了一个点。你需要根据实际服务器地址修正它:
- 如果服务器IP是
192.168.1.212,改成:let url = URL(string: "http://192.168.1.212/FeatureRequestComponent/FeatureRequestComponentAPI")! - 如果服务器IP是
192.168.1.21,端口是2,要用冒号分隔IP和端口(不是点):let url = URL(string: "http://192.168.1.21:2/FeatureRequestComponent/FeatureRequestComponentAPI")!
这个错误会导致请求根本无法正确发送到目标服务器,直接触发服务器端的未知错误逻辑。
2. 参数类型的潜在隐患
你定义的参数是[String: Any],当把value转成字符串时("\(value)"),虽然当前参数都是字符串类型,但如果后续新增数字、布尔等类型的参数,会导致编码结果不符合服务器预期。建议直接把参数定义成[String: String],让类型更安全:
let parameters: [String: String] = [ "AppID": "67B10F42-A372-4D4B-B630-5933E3F7FD65", "FeatureTitle": "ABCD", "UserName": "Ayaz", "UserEmail": self.userEmailTextfield.text ?? "", "Priority":"H", "Description": self.featureDescriptionTextView.text ?? "", "UseCase": self.useCaseTextView.text ?? "", "DeviceType" : "iPhone" ]
3. 调试建议
如果修正URL后还是出现错误,可以通过以下方式进一步排查:
- 打印编码后的请求体,确认参数格式是否正确:
if let bodyString = String(data: request.httpBody!, encoding: .utf8) { print("Encoded body: \(bodyString)") } - 使用抓包工具(比如Charles、Proxyman)查看完整的请求详情,确认请求是否到达服务器、请求头和请求体是否符合API文档要求。
内容的提问来源于stack exchange,提问作者user11100093
相关产品推荐
相关产品推荐

