鍍金池/ 問答/PHP  HTML/ PHP GuzzleHttp 無法獲取到返回結(jié)果

PHP GuzzleHttp 無法獲取到返回結(jié)果

$client = new GuzzleHttp\Client;
$response = $client->request('POST', 'http://www.jgggbbs.cn/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LRTTI&inajax=1', array(
    'form_params' => array(
        'username'=>'test',
        'password'=>'fwefwegweg'
    ),
    'allow_redirects' => true,
    'headers' => [
        'User-Agent' => 'Mozilla/5.0 (Windows NT 10.0; …) Gecko/20100101 Firefox/61.0',
        'content-type' => 'application/x-www-form-urlencoded',
        'cache-control'      => 'no-cache'
    ]
));
print_r($response->getBody()); //這里輸出為空,無法獲取到返回結(jié)果

用PHP GuzzleHttp來登錄某個(gè)論壇,這里先不管用戶名和密碼有沒有錯(cuò),也不管提交的參數(shù)有沒有錯(cuò),即使有錯(cuò),網(wǎng)站也會(huì)返回出錯(cuò)的文字提示,但是現(xiàn)在我獲取不到任何返回的文字,請問是怎么回事呢?

下面是改用php curl來發(fā)送這請求,這個(gè)能獲取到返回結(jié)果(同樣先不管是否登錄成功,只要有返回結(jié)果就行):

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://www.jgggbbs.cn/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LRTTI&inajax=1",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "username=test&password=test",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache",
    "content-type: application/x-www-form-urlencoded"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response; //這里能獲取反返回結(jié)果
}
回答
編輯回答
老梗

先看看狀態(tài)碼吧

$response->getStatusCode();

正常的 $response->getBody() 返回的 stream 對(duì)象

2017年7月5日 05:26
編輯回答
苦妄
json_decode($response->getBody()->getContents(), true)
2018年6月1日 18:39