gpt4 book ai didi

ios - Swift 3 和 Swift 4 中的 WebService API 方法?

转载 作者:行者123 更新时间:2023-12-01 18:37:02 25 4
gpt4 key购买 nike

我是 Swift 的新手iOS 和我想在 Web 服务的单独类(如 NSObject )中创建一个单独的方法,以便我可以在任何 ViewController 中使用它并解析任何类型的 JSON使用 NSURLSession 响应和 Alamofire .有人可以帮助我。

最佳答案

class WebRequester: NSObject {

static let shared = WebRequester()

let session = URLSession.shared

func request(urlStr:String, parameter:String, token:String? = nil, callback:@escaping (_ result:NSDictionary?, error:Error?) -> Void) {

let url = URL(string: BaseURL + urlStr)

debugPrint("=====================")
debugPrint(url ?? "")
debugPrint(parameter)
debugPrint("=====================")

var request = URLRequest(url: url!)
request.httpMethod = "POST"
request.httpBody = parameter.data(using: String.Encoding.utf8)


print("Token :", (token ?? ""))
request.setValue(token, forHTTPHeaderField: "Authorization")


let task = session.dataTask(with: request) { (data, response, error) in
DispatchQueue.main.async {
if error == nil {
do {
let jsonObj = try JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments)
if let dic = jsonObj as? NSDictionary {
callback(dic, error)
}
}
catch {
callback(nil, error)
}
}
else {
callback(nil, error)
}

}
}
task.resume()
}

}

您需要将参数作为字符串传递
var params = "user_id=" + "12"
params += "&course_id=" + "1"

WebRequester.shared.request(urlStr: urlStr, parameter: params) { (result, error) in
DispatchQueue.main.async {
print(result)
}
}

您也可以将参数作为字典传递,但需要使用以下 Dictionary 转换为字符串延期

request.httpBody = parameter.stringFromHttpParameters().data(using: String.Encoding.utf8)


extension Dictionary {
func stringFromHttpParameters() -> String {
let parameterArray = self.map { (key, value) -> String in
let percentEscapedKey = (key as! String).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
let percentEscapedValue = (value as AnyObject).addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)!
return "\(percentEscapedKey)=\(percentEscapedValue)"
}

return parameterArray.joined(separator: "&")
}
}

网络请求者
  • Http请求
  • 单张图片的多部分
  • 多幅图像

  • 您需要根据您的 api 响应更改响应结构

    您需要根据您的 api 设置授权和 api key

    WebRequester

    关于ios - Swift 3 和 Swift 4 中的 WebService API 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52310469/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com