我设法使用Goutte Laravel 4成功访问了远程 JSON 资源:
$client = Goutte::getNewClient();
//*
$crawler = $client->request('GET', 'http://domain.mg/admin');
$form = $crawler->selectButton('Login')->form();
$crawler = $client->submit($form, array('username' => 'username', 'password' => 'password'));
//*/
$crawler = $client->request('GET', 'http://domain.mg/usergroup/list'); // Yields JSON Response
return dd($crawler);
它产生如下输出:
对象(Symfony\Component\DomCrawler\Crawler)#285 (4) { ["uri":protected]=> string(36) " http://domain.mg/usergroup/list" ["defaultNamespacePrefix":"Symfony\Component\DomCrawler\Crawler":private]=> 字符串(7) "default" ["namespaces":"Symfony\Component\DomCrawler\Crawler":private]=> 数组(0) { } ["storage":"SplObjectStorage":private]=> 数组(1) { ["0000000075faaa10000000001af55ef8"]=> 数组(2) { ["obj"]=> 对象(DOMElement)#241 (17) { [ "tagName"]=> string(4) "html" ["schemaTypeInfo"]=> NULL ["nodeName"]=> string(4) "html" ["nodeValue"]=> string(438) "[{" id":1,"group_name":"Compte principal","group_desc":"Administrateur","group_level":9},{"id":2,"group_name":"Profil pour les comptables","group_desc":"Comptables","group_level":2},{"id":3,"group_name":"Validateur d'op\u00e9ration","group_desc":"Superviseur"," group_level":9},{"id":18,"group_name":"No Comment","group_desc":"Autres 雇用\u00e9s","group_level":6},{"id":41,"group_name" :"Invit\u00e9","group_desc":"Guest","group_level":2}]" ["nodeType"]=> int(1) ["parentNode"]=> string(22) "(对象值省略)" ["childNodes"]=> string(22) "(省略对象值)" ["firstChild"]=> string(22) "(省略对象值)" ["lastChild"]=> string(22) "(省略对象值)" ["previousSibling"]=> string(22) "(省略对象值)" ["attributes"]=> string(22) "(省略对象值)" ["ownerDocument"]=> string(22) "(省略对象值)" ["namespaceURI"]=> NULL ["prefix"]=> string(0) "" ["localName"]=> string(4) "html" ["baseURI"]=> NULL ["textContent"]=> string(438) "[{"id":1,"group_name":"Compte principal","group_desc":"Administrateur","group_level ":9},{"id":2,"group_name":"Profil pour les comptables","group_desc":"Comptables","group_level":2},{"id":3,"group_name":"Validateur d'op\u00e9ration","group_desc":"Superviseur","group_level":9},{"id":18,"group_name":"No Comment","group_desc":"Autres 雇用\u00e9s","group_level":6},{"id":41,"group_name":"邀请\u00e9","group_desc":"Guest","group_level":2}]" } ["inf"] => 空 } } }"group_level":2}]" } ["inf"]=> NULL } } }"group_level":2}]" } ["inf"]=> NULL } } }
我偶然发现提取/转换对象内 JSON 的内部表示$crawler
。那怎么可能呢?