3

認証とクライアントの2つのオブジェクトを期待するサービスがあります。両方とも正しくマッピングされています。

私はそれらをJsonとして消費しようとしていますが、それを行うのに苦労しています。パラメータを1つだけ指定すると正常に機能しますが、2つのパラメータを渡してこのサービスを呼び出すにはどうすればよいですか?いつも私にいくつかの例外を与えてください。

これが私のRESTサービスです:

@POST
@Path("login")
@Consumes("application/json")
public void login(Authentication auth, Client c)
{
    // doing something
}

そして、これが私のPHPコンシューマーです。

$post[] = $authentication->toJson();
$post[] = $client->toJson();

$resp = curl_post("http://localhost:8080/login", array(),
            array(CURLOPT_HTTPHEADER => array('Content-Type: application/json'),
                  CURLOPT_POSTFIELDS => $post));

CURLOPT_POSTFIELDSに何を配置するかについてもいくつかのバリエーションを試しましたが、機能させることができませんでした。

4

1 に答える 1

0

おそらくあなたが抱えている問題は、マッピングしている配列キーをおそらく含む番号付き配列として $post を宣言していることです。基本的に、これはあなたがそれを与えているものです:

Array(
     1 => Array(
          'authentication' => 'some data here'
     ),
     2 => Array(
          'client' => 'some more data here'
     )
)

実際には、次のように $post 変数を作成する必要があります。

Array(
     'authentication' => 'some data here',
     'client' => 'some more data here'
)

コードを次のようなものに変更してみてください (最適ではありませんが、作業は完了するはずです)。

$authentication = $authentication->toJson();
$client = $client->toJson();
$post = array_merge($authentication, $client);

$resp = curl_post("http://localhost:8080/login", array(),
        array(CURLOPT_HTTPHEADER => array('Content-Type: application/json'),
              CURLOPT_POSTFIELDS => $post));
于 2012-03-19T05:29:13.427 に答える