开发者

Resteasy service expecting 2 json objects

I have a service that expects 2 objects... Authentication and Client. Both are mapped correctly.

I a开发者_开发知识库m trying to consume them as Json, but I'm having a hard time doing that. If I specify just one parameter it works fine, but how can I call this service passing 2 parameters? Always give me some exception.

Here is my rest service:

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

And here is my PHP consumer:

$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));

I tried some variations on what to put on CURLOPT_POSTFIELDS too but couldn't get it to work.


The problem you are probably having, is that you are declaring $post as a numbered array, which probably contains the array keys you are mapping. Basically, this is what you are giving it:

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

When in reality, you should be creating the $post var like so:

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

Try changing your code to something more like this (not optimal, but should get the job done):

$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));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜