POST通信をした時にPHP側で値が空になる

投稿者: Anonymous

現在以下のようにパラメーターと共にPOST通信を行なっています。

        let parameters: [String:Any] = [
            "Diary": [
                "ID": diary.id,
                "Title": diary.title,
                "Content": diary.content,
                "XTime": diary.xtime,
                "IsShared": diary.isShare
            ]]

        var request = URLRequest(url: url!)
        request.httpMethod = "POST"
        request.timeoutInterval = 10
        request.httpBody = try! JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted)
        let task = URLSession.shared.dataTask(with: request) { data, response, error in

そしてPHP側は以下のようになっています。

  $json = file_get_contents('php://input');
  $data = json_decode($json, true);
  var_dump($json);

しかし実際にブラウザには以下のように表示されてしまっています。

string(0) “”

なぜPHP側で値が受け取れていないのでしょうか。
どなたか分かる方がいれば教えていただきたいです。よろしくお願いします。

解決

Swift のコードに

request.addValue("application/json", forHTTPHeaderField: "Content-Type")

を追加するとどうでしょうか?

また、アクセスする url を https://httpbin.org/post に変えてみるとどうでしょうか?

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *