无法在API响应中获得成功

时间:2019-07-19 11:14:40

标签: ios swift

这就是我使用URLSession发出api请求的方式:

let url = URL(string: "http://192.168.1.21.2/FeatureRequestComponent/FeatureRequestComponentAPI")!
        var request = URLRequest(url: url)
        request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        request.httpMethod = "POST"
        let parameters: [String: Any] = [
            "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"
        ]
        request.httpBody = parameters.percentEscaped().data(using: .utf8)


        let task = URLSession.shared.dataTask(with: request) { data, response, error in
            guard let data = data,
                let response = response as? HTTPURLResponse,
                error == nil else {                                              // check for fundamental networking error
                    print("error", error ?? "Unknown error")
                    return
            }

            guard (200 ... 299) ~= response.statusCode else {                    // check for http errors
                print("statusCode should be 2xx, but is \(response.statusCode)")
                print("response = \(response)")
                return
            }

            let responseString = String(data: data, encoding: .utf8)
            print("responseString = \(responseString)")
        }

        task.resume()

}

 extension Dictionary {
        func percentEscaped() -> String {
            return map { (key, value) in
                let escapedKey = "\(key)".addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed) ?? ""
                let escapedValue = "\(value)".addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed) ?? ""
                return escapedKey + "=" + escapedValue
                }
                .joined(separator: "&")
        }
    }



    extension CharacterSet {
        static let urlQueryValueAllowed: CharacterSet = {
            let generalDelimitersToEncode = ":#[]@" // does not include "?" or "/" due to RFC 3986 - Section 3.4
            let subDelimitersToEncode = "!$&'()*+,;="

            var allowed = CharacterSet.urlQueryAllowed
            allowed.remove(charactersIn: "\(generalDelimitersToEncode)\(subDelimitersToEncode)")
            return allowed
        }()
    }

以上,我给出了转义百分比的扩展名和一个字符集

但是我得到的响应是这样的错误:

responseString = Optional("{\"isError\":true,\"ErrorMessage\":\"Unknown Error Occured\",\"Result\":{},\"ErrorCode\":999}")

我在这里做错了什么...?我应该在响应中获得成功,但是我得到的是错误消息。

1 个答案:

答案 0 :(得分:0)

我试图在您的代码中检测到问题,但没有找到

使用我的代码战争效果很好

希望对您有帮助

ph_number: number =80;