ios — Как отформатировать HTML, PHP для удобства чтения с помощью NSURL Swift

Я пытаюсь подключиться к базе данных MySQL с помощью Swift через PHP, получив HTML-код PHP-скрипта. Я планирую использовать URL для передачи переменных, таких как имя пользователя, пароль или идентификатор, в сценарий PHP, а затем вызвать MySQL. Тем не менее, всякий раз, когда я пытаюсь получить ответ веб-страницы с NSURL происходит ошибка Вот код, который я использую:

let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: \(error)")
}
print("Response: \(response)")
print("Response String: \(responseString)")
}
task.resume()

Нужно ли форматировать вывод с веб-сайта, чтобы он был правильно перенесен в Swift? Спасибо вам за помощь.

0

Решение

Ваш код работает на площадке Xcode 7.1 без каких-либо ошибок. Чтобы асинхронный код выполнялся на игровой площадке, я добавил 2 строки. Попробуй сам. Поэтому я думаю, что проблема заключается в вашем сервере.

import Foundation
import XCPlayground

// Let asynchronous code run
XCPlaygroundPage.currentPage.needsIndefiniteExecution = true

let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
if error != nil {
print("Error: \(error)")
}
print("Response: \(response)")
print("Response String: \(responseString)")
}
task.resume()

Если вы не можете понять, в чем дело, сообщение об ошибке поможет другим узнать, что произошло.

ОБНОВИТЬ:
Я попробовал ваш код в проекте iOS, код вылетает, потому что вы не проверяете, равны ли данные нулю, а просто разворачиваете их в этой строке:

let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)

Но почему данные оказываются нулевыми? Это связано с тем, что App Transport Security в iOS 9 не позволяет использовать HTTP по умолчанию. Ваш сервер должен быть HTTPS с TLS v1.2 или выше. Чтобы разрешить HTTP-запросы, обратитесь к этому: Настройка исключений безопасности транспорта приложений в iOS 9 и OSX 10.11

Также вы должны проверить ошибку перед использованием данных, чтобы избежать сбоя.

let myUrl = NSURL(string: "http://www.google.com")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
// Check error before using the data
if error != nil {
print("Error: \(error)")
return
}
let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print("Response: \(response)")
print("Response String: \(responseString)")
}
task.resume()
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]