質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1396閲覧

unityからcakephp3へPOSTをなげたいのですが、404エラーでハマっております・・・

kurofukuro

総合スコア21

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/04/20 14:41

編集2020/04/20 14:56

unityを使ってモバイルアプリを作成しているのですが、
unityのスクリプト(c#)からcakephpにPOSTすると404エラーがかえってきてしまいcakephpのコントローラーで動作をしてくれません。
ヘッダーのチェック機能をOFFにせずにPOSTリクエストができる方法を探しております。

書き方等わかりづらい部分があるかと思いますが、解決方法あればご教授ください。
(バリデーション等は全て外して記載しました。)

環境
cakephp3.4
php 7
unity 2018.4.19f

通信の流れ
① unity側からGETを送信(CSRfTokenをもらいに行く)
② cakephp側からCSRfTokenをjsonで①に渡す。
③ unity側からヘッダーリクエストに(CSRFTokenを入れて)POST送信する。
↓↓ この時にcakephp側で404(ページが見つからない)と言われてしまいます。
④ cakephp側で受け取ったPOSTから処理を実行値をJSONで返す。
⑤ unity側で受信

C#(送信側)

C#

1//クラス作成 2 [System.Serializable] 3 public class HogeHoge 4 { 5 public string xxxxxx; 6 public string yyyyyy; 7 8 } 9 [System.Serializable] 10 public class Token 11 { 12 public string csrfToken; 13 } 14 public HogeHoge HogeHoge = new HogeHoge(); 15 public string csrftoken; 16 17HogeHoge.xxxxxx = inputField.text;//フォームに入力された値をいれる 18HogeHoge.yyyyyy = inputField2.text; 19 20string jsonhoge = JsonUtility.ToJson(HogeHoge);// 21var ReturnShosai = StartCoroutine(Post("https://exemple.com/index, jsonhoge)); 22 23//上記の関数 24 private IEnumerator Post(string url, string bodyJsonString) 25 { 26 //トークン取得 27 var getrequest = UnityEngine.Networking.UnityWebRequest.Get(url); 28 //通信待ち 29 yield return getrequest.SendWebRequest(); 30 31 if (getrequest.isHttpError || getrequest.isNetworkError) 32 { 33 print(getrequest.error); 34 } 35 else 36 { 37 //結果(トークンを取得できたら) 38 string jsonstr = getrequest.downloadHandler.text; 39 Token token = JsonUtility.FromJson<Token>(jsonstr); 40 csrftoken = token.csrfToken; 41 42 //POSTリクエスト 43 var request = new UnityWebRequest(url, "POST"); 44 byte[] postData = Encoding.UTF8.GetBytes(bodyJsonString); 45 request.uploadHandler = (UploadHandler)new UploadHandlerRaw(postData); 46 request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); 47 request.SetRequestHeader("Content-Type", "application/json"); 48 request.SetRequestHeader("X-CSRF-TOKEN", csrftoken); 49 request.SetRequestHeader("Cookie", "csrfToken=" + csrftoken); 50 yield return request.SendWebRequest(); 51 } 52 } 53 54

cakephp側

php

1namespace App\Controller; 2 3use App\Controller\AppController; 4use Cake\ORM\TableRegistry; 5 6class AbcController extends AppController 7{ 8 9 public function initialize(){ 10 //必要なコンポネート等呼出 11 } 12 //unityよりGETもしくはPOSTがきたら下記 13 public function index(){ 14 $this->autoRender = false;//レタリング機能オフ 15 if (!$this->request->isPost()) { 16 //getの値を取得 17 $OutputData = $this->request->getCookieParams(); 18 }else { 19 //POST受信※jsonで受け取りデコード 20 $PostList = file_get_contents("php://input"); 21 $DecodePostList = json_decode($PostList); 22 23 //ポストを受け取って処理を実行・・・・・ 24 $OutputData = $hogehoge;//処理が完了し値をいれる 25 } 26 //jsonでunity側へ送る。 27 $this->response->body(json_encode($OutputData)); 28 } 29

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/04/20 20:22

回答依頼いただきましたが、C#(.net)ならともかくUnity側のことは全く分からないものでお役には立てないかもしれませんが、実行自体に問題ないのでしたら、コードコピペミスってませんか? >StartCoroutine(Post("https://exemple.com/index, jsonhoge)); ↑" が適切に閉じられてないように見える
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問