3

我有一个需要 2 个对象的服务......身份验证和客户端。两者都正确映射。

我试图将它们作为 Json 来使用,但我很难做到这一点。如果我只指定一个参数,它工作正常,但我如何调用这个服务传递 2 个参数?总是给我一些例外。

这是我的休息服务:

@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 var:

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 回答