发布请求未响应

时间:2017-09-08 04:31:30

标签: ios swift http post nsurlsession

我正在做一个非常简单的postRequest,但我服务没有回应我,你知道为什么会这样吗?也许我做错了什么你能帮帮我吗?提前致谢。

这是我的代码Request in postman

@IBAction func buton(_ sender: Any) {
        let parameters = ["acceptPrivacyNotice": true, "name" :"xxxxx xxxxx", "email": "xxxxx@mail.com", "password":"Qwerty2012", "passwordConfirm":"Qwerty2012","deviceID" : "", "isProvider" : false, "idTypeProvider": 1] as [String : Any]

        guard let url = URL(string: "https://www.apps-sellcom-dev.com/Engie/api/account/register") else {return}
        var  request = URLRequest(url: url)
        request.httpMethod = "POST"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        request.addValue("M1o2K1RVMzRHVSNteUtLOjNzSCR5LUEyKk5qOEhFRg==", forHTTPHeaderField: "Authorization")

        guard  let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else {
            return
        }
        request.httpBody = httpBody

        let session = URLSession.shared
        session.dataTask(with: request) { (data, response, error) in
            if let response = response {
                print("Response",response)
            }
            if let data = data {
                do {
                   let json = try JSONSerialization.jsonObject(with: data, options: [])

                    print(json)
                } catch {
                    print(error)
                }
            }
        }.resume()
    }

2 个答案:

答案 0 :(得分:0)

试试这个:

@IBAction func buton(_ sender: Any){
    let params = ["acceptPrivacyNotice": true, "name" :"xxxxx xxxxx", "email": "xxxxx@mail.com", "password":"Qwerty2012", "passwordConfirm":"Qwerty2012","deviceID" : "", "isProvider" : false, "idTypeProvider": 1] as [String : Any]
        let session = Foundation.URLSession.shared
        let url = URL(string: "https://www.apps-sellcom-dev.com/Engie/api/account/register")
        var request = URLRequest(url : url!)
        request.httpMethod = "POST"


        do {

            let jsonData = try JSONSerialization.data(withJSONObject: params, options: .prettyPrinted)
            request.addValue("M1o2K1RVMzRHVSNteUtLOjNzSCR5LUEyKk5qOEhFRg==", forHTTPHeaderField: "Authorization")
            request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
            request.httpBody = jsonData

            session.dataTask(with: request, completionHandler: { data, response, error in
                OperationQueue.main.addOperation {

                    guard error == nil && data != nil else {
                        print("error=\(String(describing: error))")
                        return
                    }

                    if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {           // check for http errors
                        print("statusCode should be 200, but is \(httpStatus.statusCode)")
                        print("response = \(String(describing: response))")
                    }

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

                    if let responsedata = responseString!.data(using: String.Encoding.utf8)! as? Data{

                        do {

                            let jsonResult:NSDictionary = try JSONSerialization.jsonObject(with: responsedata, options: []) as! NSDictionary
                            print("Get The Result \(jsonResult)")
                            if error != nil {
                                    print("error=\(String(describing: error))")

                            }


                            if let str = jsonResult["success"] as? NSNull {
                                print("error=\(str)")

                            }
                            else {
                                let responseString = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
                                print("Response string : \(String(describing: responseString))")
                            }



                        } catch let error as NSError {
                            print(error.localizedDescription)
                        }
                    }
                }
            }) .resume()
        }catch {

        }

    }

答案 1 :(得分:0)

我已经测试了您的代码,并且您没有看到回复的原因是完成功能块在发生故障时不会执行任何操作。

当我运行您的请求时,它返回时出现以下错误

Error Domain=NSPOSIXErrorDomain Code=100 "Protocol error" UserInfo={NSErrorPeerAddressKey=<CFData 0x608000092200 [0x101840c70]>{length = 16, capacity = 16, bytes = 0x100201bb34bface50000000000000000}, _kCFStreamErrorCodeKey=100, _kCFStreamErrorDomainKey=1}

我最好的猜测是httpBody有问题。希望有所帮助。