如何在Swift 3中的POST请求中发送表单数据

用户6500031

我正在尝试使用Web服务,用户名和密码发布表单数据,但作为响应,它显示了一条错误消息,指出“无法连接到服务器”。

请帮助我在POST请求中发送表单数据。

        let dict:[String:String] = ["userName": userName as! String, "password": password as! String]

        do {

            let jsonData = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)

            let url = URL(string: "(some url)")!

            var request  = URLRequest(url: url)

            request.httpMethod = "POST"

            request.setValue("application/x-www-form-urlencoded charset=utf-8", forHTTPHeaderField: "Content-Type")

            request.httpBody = jsonData

            let task = URLSession.shared.dataTask(with: request) { data, response, error in

                if error != nil {

                    print(error!.localizedDescription)

                    return

                }

                do {

                    let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? NSDictionary

                    if let parseJSON = json {

                        let resultValue:String = parseJSON["success"] as! String;

                        print("result: \(resultValue)")

                        print(parseJSON)

                    }

                } catch let error as NSError {

                    print(error)

                }
            }

            task.resume()

        } catch {

            print(error.localizedDescription)

        }

我尝试在请求中添加值,可能是形成的请求中缺少某些值。请帮忙!

那就是邮递员的回应

luhuiya

我的调用api类

class ApiService
{
    static func getPostString(params:[String:Any]) -> String
    {
        var data = [String]()
        for(key, value) in params
        {
            data.append(key + "=\(value)")
        }
        return data.map { String($0) }.joined(separator: "&")
    }

    static func callPost(url:URL, params:[String:Any], finish: @escaping ((message:String, data:Data?)) -> Void)
    {
        var request = URLRequest(url: url)
        request.httpMethod = "POST"

        let postString = self.getPostString(params: params)
        request.httpBody = postString.data(using: .utf8)

        var result:(message:String, data:Data?) = (message: "Fail", data: nil)
        let task = URLSession.shared.dataTask(with: request) { data, response, error in

            if(error != nil)
            {
                result.message = "Fail Error not null : \(error.debugDescription)"
            }
            else
            {
                result.message = "Success"
                result.data = data
            }

            finish(result)
        }
        task.resume()
    }
}

以及何时使用

ApiService.callPost(url: url, params: params, finish: finishPost)

和完成功能

func finishPost (message:String, data:Data?) -> Void
{
    do
    {
        if let jsonData = data
        {
            let parsedData = try JSONDecoder().decode(Response.self, from: jsonData)
            print(parsedData)
        }
    }
    catch
    {
        print("Parse Error: \(error)")
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在RestAssured的Body中设置带有特定内容类型的部分的表单数据发送POST

如何在Java Servlet中处理多部分/表单数据POST请求?

如何在HTTP请求中发送多部分表单数据(用于Watson NLC培训)?

如何在Go中发送POST请求?

如何通过Volley在Android中发送“多部分/表单数据” POST

如何使用Alamofire 4在Swift 3中发送带有参数和正文的JSON数据的POST请求?

在Swift3中发送JSON POST请求

如何在Swift中发送POST参数?

如何在Retrofit2 Android中发送表单数据

如何在angular2中发送带有表单数据的帖子

如何在Kotlin中的POST请求中发送JSONArray?

如何在Ballerina中的POST请求中发送表单数据?

如何使用Node.js中的请求模块发送带有删除请求的表单数据和标题

如何使用python请求发送表单数据?

如何在POST请求中发送数据,而用户未在Django中输入数据

如何在表单数据/ [FromForm]中发送可为空的DateTime

如何使用MonoTouch在iOS中的后期请求中发送表单数据?

如何在ajax中发送多部分/表单数据请求

POST(HTTP)+ jQuery:如何发送特定的表单数据?

如何在角度资源保存方法中发送带有ID的“表单数据”?

在Hapijs后端处理Swift中Alamofire发送的多部分/表单数据请求

如何在angularjs中发布动态表单数据?

如何找出哪个页面正在发送$ _POST表单数据?

如何从 Java 中的 POST 请求中获取表单数据

我应该如何在 Http POST 请求的正文中发送图像文件以及其他表单数据 angular 5.后端在 Laravel 中使用干预包

如何读取表单数据中针对一个参数发送的 $_POST 中的多个值

使用 Swift 在 Firestore 中发送表单数据

如何在flutter的post请求中发送数据数组

如何在 react native expo 中发送表单数据和图像文件?