Swift 앱에서 내 로컬 서버로 HTTP 요청을 보낼 때마다 항상 500 상태, 비어있는 Optional()
본문 및 text/html Content-Type으로 응답합니다. 이 방법으로 HTTP를 처음 사용하기 때문에 오류가 어디에 있는지 확신 할 수 없습니다. 나는 pecl-http를 설치했고 올바르게 설정했다. 나 또한 (생각) 나는 PHP 코드에서 본문과 내용 유형을 올바르게 설정하고있다. Swift 코드에 this tutorial의 Swift 부분을 따라 PHP를 직접 만들었습니다. 나는 그 문제가 어디 있는지 전혀 모른다. 내 오류는 응답을 보내거나받는 것으로 생각하므로 첨부 한 코드를 참조하십시오.Swift/PHP와의 HTTP 연결
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()'
스위프트 코드 받기 응답
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();
}