繁体   English   中英

在Swift中使用基本身份验证进行POST请求+获取参数+发布参数(使用Alamofire或RxSwift或其他方法)

[英]POST Request with basic auth in Swift + get params + post params (using Alamofire or RxSwift or any thing else)

我尝试在服务器http://test.alex009.ru/上发送POST请求,并设置HTTP身份验证(alice / Qwerty1234)

执行查询:

通过参数传递POST http://test.alex009.ru/alice.php

get参数为“ secret” = alex009 post参数“ input” =(从文本字段输入的文本)

标头中的必须指定接收到的内容的类型-application / json

我的代码是:

我有这个用于HTTP基本身份验证

let username = "alice"
let password = "Qwerty1234"
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = loginData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions())
let authenticationToken = base64LoginString

我需要发布thith get参数:

let parameters : [String: AnyObject] = ["secret" : "alex009"]

然后创建NSMutableURLRequest:

let url = NSURL(string: "http://test.alex009.ru/alice.php")
        var request = NSMutableURLRequest(URL: url!)
        request.HTTPMethod = "POST"
        let encoding = Alamofire.ParameterEncoding.JSON
        (request, _) = encoding.encode(request, parameters: parameters)
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
        request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
        let values = ["input" : "textFromTextFild"]
        request.HTTPBody = try! NSJSONSerialization.dataWithJSONObject(values, options: [])
        print(request)

并与Alamofire一起发送:

Alamofire.request(request)
            .validate()
            .responseJSON { response in
                // do whatever you want here
                switch response.result {
                case .Failure(let error):
                    print(error)
                case .Success(let responseObject):
                    print(responseObject)
                }
        }

并从服务器获取响应:

{URL:我的URL}错误Domain = com.alamofire.error代码= -6003“响应状态代码不可接受:406” UserInfo = {NSLocalizedFailureReason =响应状态代码不可接受:406}

我的错误在哪里?

 let headers = ["Content-Type": "application/json"] let params: Parameters = [ "paramsString": param] Alamofire.request( baseUrlDev, method: .post, parameters:params, encoding: JSONEncoding.default, headers: headers).responseJSON {(response: DataResponse<Any>) in switch(response.result) { case .success(_): if let data = response.result.value{ HyberLogger.debug(response.result.value) } break case .failure(_):HyberLogger.debug("Unknown Error") } } break } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM