如何添加'将字符转换为表示PHP中WS调用的JSON的字符串?

时间:2017-01-30 11:13:10

标签: php json laravel laravel-5

我是 PHP 中的绝对初学者,而且是 Laravel 框架(我来自Java)。

我发现尝试对REST Web服务执行 Guzzle 调用时遇到以下问题:

如果我使用模拟的creadential数据,它可以正常工作:

    $response = $client->get('http://localhost:8080/Extranet/login',
        [
            'auth' => [
                'nobili.andrea@gmail.com',
                'pswd'
            ]
        ]);

    $dettagliLogin = json_decode($response->getBody());

    \Log::info('response: '.(json_encode($dettagliLogin)));

但是试图这样做

    $response = $client->get('http://localhost:8080/Extranet/login',
        [
            'auth' => [
                //'nobili.andrea@gmail.com',
                //'pswd'
                $credentials['email'] . ','
                .$credentials['password']
            ]
        ]);

    $dettagliLogin = json_decode($response->getBody());

    \Log::info('response: '.(json_encode($dettagliLogin)));

它出错了。

我认为问题可能取决于被模拟的凭据在用户名和密码字段之前和之后包含' 的事实:

'nobili.andrea@gmail.com',
'pswd'

如何将其插入动态版本的代码中?

2 个答案:

答案 0 :(得分:2)

您需要执行以下操作:

   $response = $client->get('http://localhost:8080/Extranet/login',
        [
            'auth' => [
                $credentials['email'],   // <=== don't concatinate the comma here
                $credentials['password']
            ]
        ]);

不,需要连接数组参数。

答案 1 :(得分:1)

当您需要数组时,您将凭据放入字符串中。请尝试以下方法;

$response = $client->get('http://localhost:8080/Extranet/login',
    [
        'auth' => [
            $credentials['email'],
            $credentials['password']
        ]
    ]);