初めての Web サービスを書いていますが、JSON データの受け渡しに関連する問題があります。私の Web サービスは 2 つのファイルに分割されています。サービス ハンドラを含むcontroller.phpと、要求に応じて提供されるクラスとメソッドを含むservice.phpです。
これは、controller.php からの取得フラグメントです。
public function atender() {
// pre-procesamos la petición
if (!empty($_POST)) {
if (!empty($_POST["class"]) && !empty($_POST["action"]) && !empty($_POST["function"])) {
$clase = ucwords($_POST["class"]);
$metodo = "{$_POST["action"]}{$this->obtenerMetodo($_POST["function"])}";
$id = (!empty($_POST["datos"]) ? stripslashes($_POST["datos"]) : null);
GET モードと POST モードの両方でリクエストに対応できます (認証を必要としないメソッド ( getCategories、getCategoryById、getProducts、getProductByIdなど) には GET を使用します。これらは、寿司レストランで料理のカテゴリと料理を取得するメソッドです)。
どの GET リクエストでも、すべてが期待どおりに機能します。私の問題は、POST リクエストを処理するときに発生します。すべての URL パラメーターを JSON で取得する必要があります。これは iOS アプリを提供するためであり、JSON はデータとの間でデータを処理する方法です。
これは、service.phpの処理フラグメントです。
public function putUser($datos) {
if (!empty($datos)) {
$usuario = json_decode($datos);
$this->log .= implode("/", $usuario) . "\r\n";
この場合、$datosはリクエストからの JSON エンコード データです。controller.php (上記のコード) で$idとして受け取ります。これは私の最初の Web サービスなので、ここで何か本当に悪いことをしている可能性が非常に高いですが、少し盲目です。
サービス処理コードのさまざまなバリエーションを試しました。json_decode($datos, true) を使用しても機能しません。私は得る
応答としての「予期しないトークン <」と、生の形式 (Google Chrome の高度な REST クライアントを使用) で次のように表示されます
<a href='function.implode'>function.implode</a>
: /service.php 344 行目 '。
SOAP は、通常、このようなカスタム コードを記述するよりも優れた代替手段であることはわかっていますが、今のところ、このコードに固執し、次のプロジェクトでより優れた代替手段を実装する必要があります。私が間違っていることを教えていただけますか?