简体   繁体   中英

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

I try to send POST request on server http://test.alex009.ru/ set HTTP authentication (alice / Qwerty1234)

execute the query:

POST http://test.alex009.ru/alice.php with parameter transfer:

get parameter is "secret" = alex009 post parameter "input" = (entered text from the text field)

in the header must specify the type of the received content - application / json

My code is:

I have this for HTTP basic auth

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

and I need to post thith get parameters:

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

then I create 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)

and send it with 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)
                }
        }

and get response from server :

{ URL: my url } Error Domain=com.alamofire.error Code=-6003 "Response status code was unacceptable: 406" UserInfo={NSLocalizedFailureReason=Response status code was unacceptable: 406}

where is my mistake?

 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 } } 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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