【问题标题】:Issue with HTTP.Body parameters - SwiftHTTP.Body 参数问题 - Swift
【发布时间】:2016-02-04 01:09:55
【问题描述】:

我有这段代码,我需要通过 BUDDY 传递参数,但我得到一个“罕见”错误。有谁能够帮我?谢了!!

这是错误

可选(错误域=NSURLErrorDomain 代码=-1017“无法解析响应”UserInfo={NSUnderlyingError=0x7fda33f4cd80 {错误域=kCFErrorDomainCFNetwork 代码=-1017“(null)”UserInfo={_kCFStreamErrorCodeKey=-1, _kCFStreamErrorDomainKey=4} }, NSErrorFailingURLStringKey=http:.../users.php, NSErrorFailingURLKey=http:.../users.php, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-1, NSLocalizedDescription=无法解析响应})

func registerUser(currentUser: Users, IsRegistered : (isRegistered: Bool, messageString: String) -> ()) {

let REGISTER_URL = "users.php?"

var bodyParams: Dictionary<String, String> = Dictionary()
bodyParams["firstName"] = currentUser.getFirstName()
bodyParams["lastName"] = currentUser.getLastName()
bodyParams["gender"] = currentUser.getGender()
bodyParams["birthday"] = currentUser.getBirthday()

let urlAppend = createFullURL(REGISTER_URL, urlParams: Dictionary())

let request = NSMutableURLRequest(URL: NSURL(string: urlAppend)!)

let loginString = "\(currentUser.getEmail()):\(currentUser.getPassword())"
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = "Basic \(loginData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength))"
let headerParams: Dictionary<String, String> = ["Authorization": base64LoginString]

for (key, value) in headerParams{
    request.setValue(value, forHTTPHeaderField: key)
}

request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")

//
// The problem is the following 4 lines, if I tell, there is no error, but of course, I can not register a user
//

do {

    request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(bodyParams, options: [])

} catch {

    IsRegistered(isRegistered: false, messageString: "Error al parsear los datos.")

}

request.HTTPMethod = METHOD_GET

NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in

    if (error != nil) {

        // ERROR HERE //      
        // ERROR HERE //
        // ERROR HERE //
        print(error)

    } else {

        ...
    }

    }.resume()

}

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    查看此链接HTTPBody

    httpBody

    此数据作为请求的消息正文发送,就像在 HTTP POST 请求中所做的那样。

    当您使用request.HTTPMethod = "GET" 时,您不能使用HTTPBody 附加您的&amp;k=v 对。 向 URL 字符串添加参数。

    【讨论】:

    • @mxcl 链接对我有用,无论如何我都会修复它。
    • 确实,再次工作,减去一个撤消!......但是,链接的半衰期是 3 小时(!)所以最好复制和粘贴提供链接作为引用。国际海事组织。不只是 MO。
    • 谢谢@mxcl,但你说的 IMO 和 MO 是什么意思?!!
    • 聚会晚了大约 5 年,但可能是“我认为”和“我认为”。
    猜你喜欢
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 2021-11-06
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多