2015-08-12 3 views
1

Привет, я новичок в Laravel и попробовал несколько тюрториков в Goutte на Guzzelhttp, но я все еще не могу понять, как удалить 3 нежелательных атрибута с самого начала ответа json, как показано здесь используется curl и json_decode.Как удалить ненужные символы из Guzzlehttp json reposnce

$url = "URL to atom feed"; 
$user = "user"; 
$pass = "pass"; 

// using CURL to get our results 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pass); 
$output = curl_exec($ch); 
curl_close($ch); 

// decoding our results into an associative array 
// doing a substring as there are 3 weird characters being passed back from IIS in front of the string 
$data = json_decode(substr($output, 3, strlen($output)), true); 

// grabbing our results object 
$list = $data['$resources']; 

у меня в ScrapeController,

<?php 

// app/controllers/ScrapeController.php 
class ScrapeController extends BaseController { 

    public function getIndex() { 
     echo "Scrape index page."; 
    } 

    public function getNode($node) { 
     echo "Scraped page $node"; 
    } 

    public function getPages() { 
     $client = new GuzzleHttp\Client(); 
     $res = $client->get('URL to atom feed', ['auth' => ['user', 'pass']]); 
     echo $res->getStatusCode(); 
     // "200" 
     // echo $res->getHeader('content-type'); 
     // 'application/json; charset=utf8' 
     echo $res->getBody(); 
     // {"type":"User"...' 

это то, что я пытался $res->getBody(substr($res, 3, strlen($res)); без везения я не могу найти ответы на эту проблему на странице жрать документов сохранить сказать любые пользовательские json_decode вариант должен быть предварительно сформирован в опции getBody().

ответ

1

Вам нужно сделать

$body = substr($res->getBody(), 3) 

вместо

$body = $res->getBody(substr($res, 3, strlen($res)) 
+0

hi jedrzej.kurylo есть ли документация по параметрам, которые можно использовать в guzzlehttp? –

+0

Не знаю. Наверняка должна быть документация на guzzlehttp github. Но это исправление не имеет ничего общего с жужжанием, это всего лишь операция над строками –

0

Недавно я нашел этот кусок кода на GitHub Колина Viebrock,

$client = new Guzzle\Http\Client('http://example.com'); 

$client->addSubscriber(new Cviebrock\Guzzle\Plugin\StripBom\StripBomPlugin()); 

$request = $client->get('some/request'); 

$response = $client->send($request); 

$data = $response->json(); 

работает удовольствие в Laravel надежды это помогает любому, кто получает «Невозможно разобрать тело ответа в JSON: 4», используя Guzzle.

Смежные вопросы