gpt4 book ai didi

ios - 无法在 swift 3 中获得正确的 api 调用

转载 作者:行者123 更新时间:2023-11-28 12:24:56 24 4
gpt4 key购买 nike

我在 postman 中尝试了这个特定的 API,它返回了一个很好的结果。 enter image description here

因此,我创建了一个参数

["JsonRequest": "{\"header\":\"GetLocationListReq\",\"accessKey\":\"fakeKey\"}"]

但是当我在我的 Xcode 项目中使用 swift 和 alamofire 调用这个 API 时传递这个参数时,我总是得到一个错误。

有兴趣的 friend ,我的apiRouter是

    //
// WINAPIRouter.swift
// Winner21
//
// Created by Lin Hairui on 27/4/17.
// Copyright © 2017 Pioneers & Leaders (Publishers). All rights reserved.
//

import Foundation
import Alamofire

enum WINAPIRouter : URLRequestConvertible {
static let baseURL = Constant.baseURL

case get(String)
case create([String:Any],String?)
case delete(String)

func asURLRequest() throws -> URLRequest {

var method : HTTPMethod {
switch self {
case .get:
return HTTPMethod.get
case .create:
return HTTPMethod.post
case .delete:
return HTTPMethod.delete
}
}


let params:(Dictionary<String, Any>?) = {
switch self {
case .get, .delete:
return nil
case .create(let params, _):
var fieldParams = params
fieldParams["accessKey"] = Constant.kAPIAccessKey

let jsonData: NSData
do {
jsonData = try JSONSerialization.data(withJSONObject: fieldParams, options: JSONSerialization.WritingOptions()) as NSData
let jsonString = NSString(data: jsonData as Data, encoding: String.Encoding.utf8.rawValue) as! String
let authParam : [String : Any] = [
"JsonRequest" : jsonString
]
print("google was here \(authParam)")
return authParam

} catch _ {
print ("JSON Failure")
}
return nil
}
}()

let url : URL = {
return URL(string: Constant.baseURL)!
}()

var urlRequest = URLRequest(url: url)


// urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type")
// urlRequest.addValue("application/json", forHTTPHeaderField: "Accept")
urlRequest.httpMethod = method.rawValue
print("facebook was here = \(urlRequest.httpMethod!)")

let encoding = JSONEncoding.default
print("yahoo was here \(params)")
//let facejsonData = try! JSONSerialization.data(withJSONObject: params!, options: JSONSerialization.WritingOptions())
return try encoding.encode(urlRequest, with: params!)
}

}

并且,我使用以下函数调用 API。

Alamofire.request(WINAPIRouter.create(params, nil)).responseJSON

最佳答案

我认为来自 API 的响应不是 JSON 格式,请尝试使用如下 URL 编码,

Alamofire.request(path, method: .get, parameters: parameters, encoding: URLEncoding.default, headers: nil) . responseString(completionHandler: { ( dataResponse ) in
/// print response

})

关于ios - 无法在 swift 3 中获得正确的 api 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43683606/

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