NSURLRequest производит разные результаты, чем HTTP-прокси-клиент
Я отправляю одно и то же HTTP-сообщение от HTTP-прокси-клиента и NSURLRequest
+ NSURLConnection
и получаю другой результат. Это запрос на аутентификацию. Из запроса проверки подлинности HTTP-прокси принимается, отправка из приложения нет. Зачем? Принятые средства после перенаправления HTML не содержит подстроки Oops
.
![введите описание изображения здесь]()
let url = NSURL(string: "http://www.swisshttp.weact.ch/en/user/login")
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let email2 = (viewController!.email.text as NSString).stringByReplacingOccurrencesOfString("@", withString: "%40")
let str = "name=\(email2)&pass=\(viewController!.password.text)&form_id=user_login" as NSString
let d = str.dataUsingEncoding(NSUTF8StringEncoding)
if let d2 = d {
request.HTTPBody = d2
let urlConnection = NSURLConnection(request: request, delegate: self)
}
UPDATE
Я поставил код @teamnorge ниже на детскую площадку и в пустой проект приложения Single View. Возвращенный HTML в проекте содержит подстроку Oops
, код, используемый на игровой площадке, не содержит ее, любая идея, что происходит, почему тот же запрос создает другой результат HTML? Я получаю сообщение failed
также от устройства iOS и от симулятора тоже.
UPDATE
Удалено NSURLRequest
кеш, например здесь, но все еще не работает должным образом. И здесь.
UPDATE
Попробовал удалить все учетные данные, такие как здесь, но не помог, учетные данные не найдены.
Ответы
Ответ 1
Похоже, что когда вы получаете HTTP 302 и новый URL-адрес местоположения, iOS автоматически извлекает страницу по этому URL-адресу, поэтому, я думаю, ваш ответ на самом деле является содержимым HTML на странице перенаправления. Пожалуйста, проверьте.
UPDATE:
import UIKit
import XCPlayground
let url = NSURL(string: "http://www.swisshttp.weact.ch/en/user/login")
let request = NSMutableURLRequest(URL: url!)
let str = "name=kukodajanos%40icloud.com&pass=jelszo&form_id=user_login" as NSString
let d = str.dataUsingEncoding(NSUTF8StringEncoding)
request.HTTPBody = d
request.HTTPMethod = "POST"
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.currentQueue()) { response, maybeData, error in
if let data = maybeData {
let contents = NSString(data:data, encoding:NSUTF8StringEncoding)
println(contents)
if contents!.rangeOfString("Oops").length == 0 {
println("success")
} else {
println("failed")
}
} else {
println(error.localizedDescription)
}
}
XCPSetExecutionShouldContinueIndefinitely()