gpt4 book ai didi

php - 与 Swift/PHP 的 HTTP 连接

转载 作者:行者123 更新时间:2023-11-30 10:19:50 25 4
gpt4 key购买 nike

每当我从 Swift 应用程序向本地服务器发送 HTTP 请求时,它总是以 500 状态、空的 Optional() 正文和 text/html Content-Type 进行响应。我不熟悉以这种方式使用 HTTP,所以我不确定错误可能出在哪里。我已经安装了 pecl-http 并且(我认为)我已经正确配置了它。我还(认为)我在 PHP 代码中正确设置了正文和内容类型。我遵循了 this tutorial 的 Swift 部分为我的 Swift 代码并自己创建了 PHP;我只是不知道问题出在哪里。我认为我的错误在于发送/接收响应,所以这就是我附加的代码。

HTTP 响应

Response: <NSHTTPURLResponse: 0x7f8b44828b80> { URL: http://localhost/practicejournal/includes/php/json_login.php } { status code: 500, headers {
Connection = close;
"Content-Length" = 0;
"Content-Type" = "text/html";
Date = "Sun, 21 Dec 2014 17:12:53 GMT";
Server = "Apache/2.4.9 (Unix) PHP/5.5.14";
"X-Powered-By" = "PHP/5.5.14";
} }
Body: Optional()
The operation couldn’t be completed. (Cocoa error 3840.)
Error could not parse JSON: 'Optional()'

Swift代码接收响应

var task = session.dataTaskWithRequest(request, completionHandler: {data, response,     error -> Void in
println("Response: \(response)")
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Body: \(strData)")
var err: NSError?
var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as? NSDictionary
if(err != nil) {
println(err!.localizedDescription)
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)
println("Error could not parse JSON: '\(jsonStr)'")
} else {
if let parseJSON = json {
var success = parseJSON["success"] as? Int
println("Success \(success)")
} else {
let jsonStr = NSString(data: data, encoding: NSUTF8StringEncoding)
}
}
})

PHP代码发送响应

//If Login is successful
$conn = null;
$success = 1;
HttpResponse::status(200);
HttpResponse::setContentType("application/json");
HttpResponse::setData($success);
HttpResponse::send();
//If Login is unsuccessful
function loginError() {
$conn = null;
$sucsess = 0;
HttpResponse::status(200);
HttpResponse::setContentType("application/json");
HttpResponse::setData($success);
HttpResponse::send();
}

最佳答案

打开 PHP 中的错误报告。请参阅How do I get PHP errors to display?

显然,您只是犯了一个错误,导致 PHP 无法正确运行,但 PHP 配置为不向您发送错误信息。显然,$sucsess 引用是错误的,但也可能存在其他问题。 (您只共享了 PHP 的一部分,因此无法知道那里还潜藏着什么。)通过更改 php.ini 来显示错误,您不必猜测问题的根源是什么。

关于php - 与 Swift/PHP 的 HTTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27591790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com