2014-10-28 6 views
0

Я использую browserstack скриншоты API - https://www.browserstack.com/screenshots/api Следующий завиток работает:жрать 422 Unprocessable Entity ошибка

curl -u "username:password" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"browsers": [{"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"}], "url": "http://google.com"}' http://www.browserstack.com/screenshots 

Однако, когда я пытаюсь тот же вызов, вызов с жрать я получаю 422 Unprocessable Entity ошибку.

$client = new GuzzleHttp\Client(); 
$request = $client->post('http://www.browserstack.com/screenshots', [ 
     'headers' => ['Content-type' => 'application/json'], 
     'auth' => ['username', 'password'] 
] 
); 

$data = ['browsers' => ['os' => 'Windows', 'os_version' => '7', 'browser_version' => '8.0', 'browser' => 'ie'], 'url' => 'http://google.com']; 
$request->setBody($data); 
$response = $request->send(); 
dd($response); 

Можете ли вы предложить, как отладить эту проблему?

ответ

1

У меня была ошибка в методе. Он должен быть $client->createRequest вместо $client->post Кроме того, у меня была ошибка при передаче данных. Браузеры должны быть массивом массивов

Существует еще одна библиотека, которая может быть использована с browserstack и жрать: https://github.com/ksenzee/browserstack-screenshots-php

$client = new GuzzleHttp\Client(); 

$request = $client->createRequest('POST', 'http://www.browserstack.com/screenshots', [ 
     'headers' => ['Content-type' => 'application/json'], 
     'auth' => ['user', 'pwd'], 
     'body' => '{"browsers": [ 
         {"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"}, 
         {"os": "android", "os_version": "4.4", "device": "HTC One M8", "browser": "Android Browser"} 
       ], 
       "url": "http://www.lipsum.com"}' 
] 
); 
$response = $client->send($request); 
dd($response->json()); 
1

Чтобы отправить JSON в API скриншотов, вам необходимо отформатировать его как строку JSON.

$client = new GuzzleHttp\Client(); 
$request = $client->post('http://www.browserstack.com/screenshots', [ 
     'headers' => ['Content-type' => 'application/json'], 
     'auth' => ['username', 'access_key'], 
     'body' => '{"browsers": [ 
          {"os": "Windows", "os_version": "7", "browser_version": "8.0", "browser": "ie"}, 
          {"os": "android", "os_version": "4.4", "device": "HTC One M8", "browser": "Android Browser"} 
        ], 
        "url": "http://www.lipsum.com"}' 
      ] 
     ); 

Вы тогда сможете просматривать прогресс в вашей BrowserStack Screenshots странице.

Для получения справки о том, как отправлять запросы POST, используя Guzzle, вы можете сослаться на эту документацию - https://media.readthedocs.org/pdf/guzzle/latest/guzzle.pdf.

+0

ты указал мне в правильном направлении, спасибо за ссылку DoCS –

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

  • Нет связанных вопросов^_^