-1
私は自分のスウィフトコードSwift HTTP Json要求がエラードメイン= NSCocoaErrorDomainコード= 3840「値なし」を返します。 UserInfo = {NSDebugDescriptionは値を=しない。}
var request = URLRequest(url: URL(string: "http://www.website.com/Application/profile.php")!)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let postString = "get_comments=\(PostId)"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data, error == nil else {
print("error=\(error!)")
return
}
if let httpStatus = response as? HTTPURLResponse, httpStatus.statusCode != 200 {
print("statusCode should be 200, but is \(httpStatus.statusCode)")
}
do {
let jsonData = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [Any]
print(jsonData)
} catch {
print(error)
}
}
task.resume()
にこの要求を持っており、profile.phpに、私はこのコード
if (isset($_POST['get_comments'])) {
$PostId = $_POST['get_comments'];
$response=["For errors",0,"Username"];
echo json_decode($response);
}
を持っている。しかし、このコードは、この次のエラー
を返します。Error Domain=NSCocoaErrorDomain Code=3840 "No value." UserInfo={NSDebugDescription=No value.}
と私はdata
を印刷するときには、.Iは、他の答えはを追加することを示唆し何をしようとした「0バイト」を印刷しますが、それは
Swiftコードにはいくつかの悪い習慣がありますが、エラー自体はバックエンドにあるようです。 Swift部分には '.mutableContainers'を使わないで' Swift'には効果がありません。また、 'Any 'の配列に' JSON'をキャストするのは悪い考えです。あなたの 'API'が' POST'リクエストの本文に 'JSON'データを期待していませんか?現時点では、あなたは 'JSON'を送信していませんが、あなたは' JSON'として応答をデコードしようとしています。 –
@DávidPásztor私は 'json_encode'に' json_decode'を間違えましたが、変更しても何も変わりませんでした。 – sakoaskoaso
期待されるリクエストのボディはどうですか?本当ですか? '.utf8'エンコードされたデータで、' JSON'ではありませんか? –