2017-08-09 18 views
-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バイト」を印刷しますが、それは

+0

Swiftコードにはいくつかの悪い習慣がありますが、エラー自体はバックエンドにあるようです。 Swift部分には '.mutableContainers'を使わないで' Swift'には効果がありません。また、 'Any 'の配列に' JSON'をキャストするのは悪い考えです。あなたの 'API'が' POST'リクエストの本文に 'JSON'データを期待していませんか?現時点では、あなたは 'JSON'を送信していませんが、あなたは' JSON'として応答をデコードしようとしています。 –

+0

@DávidPásztor私は 'json_encode'に' json_decode'を間違えましたが、変更しても何も変わりませんでした。 – sakoaskoaso

+0

期待されるリクエストのボディはどうですか?本当ですか? '.utf8'エンコードされたデータで、' JSON'ではありませんか? –

答えて

0

PostIdは、オプションの値だったと私は!【選択要求を追加するのを忘れ、何も変更していないが間違っている

get_comments="Optional("12")"のように見えました。

関連する問題