首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建Swift类来发出Http请求

创建Swift类来发出Http请求
EN

Stack Overflow用户
提问于 2017-05-22 21:07:36
回答 1查看 772关注 0票数 0

我在下面创建了这个类,以帮助从我的应用程序中的任何地方发出http请求,但是当我调用该类时,它不会像预期的那样发出请求。我看到我可以从函数中打印,所以我知道它至少有那么远。我还需要什么才能提出这个要求?api参数也被正确传递。

在viewController中:

代码语言:javascript
运行
复制
let url = "post/test"
MakeHttpRequest.sharedInstance.postRequest(api: url)

在课堂上:

代码语言:javascript
运行
复制
import Foundation

final class MakeHttpRequest {
    static let sharedInstance = MakeHttpRequest()
    var api_token = "token_here"
    var url_base = "https://test.frb.io/"
    func postRequest (api : String) {
        let parameters = ["email": "testing123@gmail.com"]
        guard let destination = URL(string: url_base + api) else { return }
        var request = URLRequest(url: destination)
        request.httpMethod = "POST"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        //            request.setValue("clientIDhere", 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 data = data {
                do {
                    let json = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
                    if (json["response"]) != nil {

                    }
                } catch {
                    print(error)
                }
            }
        }.resume()
        print(url_base + api)
    }
    private init() {
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-22 21:49:52

所以有两件事要检查。有时快速功能链不能正常工作。因此,尝试将session.dataTask拆分并恢复为两个语句。第二,尝试将错误处理添加到响应中。你可能在不知道的情况下犯了一个错误。请参阅下面的代码示例。

代码语言:javascript
运行
复制
import Foundation

final class MakeHttpRequest {
    static let sharedInstance = MakeHttpRequest()
    var api_token = "token_here"
    var url_base = "https://test.frb.io/"
    func postRequest (api: String, parameters: [String: Any]? = nil) {
        guard let destination = URL(string: url_base + api) else { return }
        var request = URLRequest(url: destination)
        request.httpMethod = "POST"
        request.addValue("application/json", forHTTPHeaderField: "Content-Type")
        //            request.setValue("clientIDhere", forHTTPHeaderField: "Authorization")
        if let parameters = parameters {
            guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: []) else { return
            }
            request.httpBody = httpBody
        }
        let session = URLSession.shared
        let task = session.dataTask(with: request) { (data, response, error) in
            if let data = data {
                do {
                    let json = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.mutableContainers) as AnyObject
                    if (json["response"]) != nil {
                        print("1234")
                    } else {
                        print("ABCD")
                    }
                } catch {
                    print(error)
                }
            } else {
                print(error ?? "")
            }
        }
        task.resume()
        print(url_base + api)
    }

    private init() {
    }
}

let url = "post/test"
MakeHttpRequest.sharedInstance.postRequest(api: url)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44122171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档