私はシンプルにGETログインが必要です。ユーザー名はシルバーで、パスワードはです。MOto & @ 10
私はSwiftHttpフレームワークを使ってリクエストを処理しています。ログイン要求を打つと、私は常に偽の応答を得ます。
は、しかし、ブラウザ(サーバーに置き換える実際のドメイン)にログイン要求のURLを打つには私が本当の取得:
https://server/api/check-access/by-login-pass?_key=wlyOF7TM8Y3tn19KUdlq&login=silver&pass=MOto%[email protected]Swiftエンコード&GETパラメーター
パスワードで&をコードしていると間違って何かがあります。私はエンコード率で置き換えましたが。ここに私のコードです:
do {
let passwordString = self.convertSpecialCharacters(string: password.text!)
print("%@", passwordString)
let opt = try HTTP.GET(Constants.kLoginUrl, parameters: ["login": username.text!, "pass": passwordString])
opt.start { response in
if let err = response.error {
print("error: \(err.localizedDescription)")
return
}
print("opt finished: \(response.description)")
self.parseLoginResponse(response.data)
}
} catch _ as NSError {
}
そして、これはconvertSpecialCharactersです:エンコーディングの
func convertSpecialCharacters(string: String) -> String {
var newString = string
let arrayEncode = ["&", "<", ">", "\"", "'", "-", "..."]
for (escaped_char) in arrayEncode {
newString = newString.encode(escaped_char)
}
return newString
}
拡張子:
extension String {
func encode(_ chars: String) -> String
{
let forbidden = CharacterSet(charactersIn: chars)
return self.addingPercentEncoding(withAllowedCharacters: forbidden.inverted) ?? self
}
}
は、あなたが一緒にパスワードを送信ログインの目的のために 'GET'を使用しないでください:これは誰かを助け、数時間を節約できます。.. OK
希望を非常に「SWIFT」を感じませんが。 http://stackoverflow.com/a/323286/2442804 – luk2302
http://stackoverflow.com/questions/24551816/swift-encode-url – Sulthan
SwiftHTTPの最新のソースを読んでいる限り、適切なエンコード率を'パラメータ'したがって、 'convertSpecialCharacters(string:)'を呼び出すと、パスワードは二重にエンコードされます。 'let passwordString = self.convertSpecialCharacters(string:password.text!)'行を削除し、 '["ログイン ":username.text !," pass ":password.text!]'として 'parameters'を作成します。 '!'は安全です) – OOPer