微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法获得我根据客户端发出的请求使用 GuzzleHttp\Psr7\Response 发送的响应

如何解决无法获得我根据客户端发出的请求使用 GuzzleHttp\Psr7\Response 发送的响应

我正在使用 GuzzleHttp\Client 将客户端的请求发送到另一个用作服务器的端口上的页面

use SL\Controllers\LoginController;
use SL\FileHelper;
use GuzzleHttp\Client;

require_once dirname(__DIR__) . DIRECTORY_SEParaTOR . "config/config.PHP";

$client = new Client();
$response = $client->request('get','http://myip:75/src/LoginVerification.PHP?username=asd&password=asd');

请求在页面上提供

require_once(__DIR__ . '/../config.PHP');

use Moodle\Manager\UserManager;
use GuzzleHttp\Psr7\Response;

$userManager = new UserManager();
$user;


$username = $_GET["username"];
$password = $_GET["password"];

$isLogin = $userManager->verifyLogin($username,$password,$user);
if($isLogin)
    $body = "yahoo";
else
    $body = "oooops";

$status = 201;
$headers = ['Content-Type' => 'application/json'];
$protocol = '1.1';
$response = new Response($status,$headers,$body,$protocol);
return $response;

请忽略在 GET 中传递的密码,因为我在这里主要关注的是发送请求和获取响应。

在服务器上提供请求后,我做出的响应如下

phrases:array(58)
reasonPhrase:"Created"
statusCode:201
headers:array(1)
headerNames:array(1)
protocol:"1.1.1"
stream:GuzzleHttp\Psr7\Stream
stream:resource id='10' type='stream'
size:null
seekable:true
readable:true
writable:true
uri:"PHP://temp"

但是收到的是这个

headerNames:array(9)
headers:array(9)
statusCode:200
reasonPhrase:"OK"
phrases:array(58)
protocol:"1.1"
headerNames:array(9)
headers:array(9)
phrases:array(58)
reasonPhrase:"OK"
statusCode:200
stream:resource id='4' type='stream'
size:null
seekable:true
readable:true
writable:true
uri:"PHP://temp"

这与我创建的响应不同。

解决方法

由于我没有使用 Laravel,因此可以通过创建一个简单的 stdClass 对象并通过执行 json_encode 回显该对象来解决无法获得我想要的响应的问题,然后您可以在响应正文中获取数据。>

$response = new stdClass();
$isLogin = $userManager->verifyLogin($username,$password,$user);
    if($isLogin)
        $response->body = "yahoo";
    else
        $response->body = "oooops";
    
    $response->status = 201;
    $response->headers = ['Content-Type' => 'application/json'];
    $response->protocol = '1.1';
    echo json_encode($response);

要在客户端获取它,您只需执行此操作

$data = $response->getBody()->gtContents();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。