Подтвердить что ты не робот

Гузл не ведет себя как CURL

Я хочу перейти с чистого CURL на Guzzle, но вызовы API не зарегистрированы правильно.

Рабочая CURL (класс отсюда: qaru.site/info/561321/...)

...
$Curl = new CURL(); // setting all curl_opts there

// creating session
$session = explode(";", $Curl->post("http://www.share-online.biz/upv3_session.php", "username=".$un."&password=".$pw));
$session_key = $session[0];
$upload_server = $session[1];

// upload
$vars = ... // see below
var_dump(explode(";",$Curl->post($upload_server, $vars))); // works

Теперь материал Guzzle

...
$Curl = new GuzzleHttp\Client();
$jar = new GuzzleHttp\Cookie\FileCookieJar("cookie.txt", true);

//creating session

$session = explode(";", $Curl->request('POST', "http://www.share-online.biz/upv3_session.php", 
   ["form_params" => ["username" => $un, "password" => $pw], 'cookies' => $jar])->getBody());
$session_key = $session[0];
$upload_server = $session[1];

$vars = ["username" => $un,
            "password" => $pw,
            "upload_session" => $session_key,
            "chunk_no" => 1,
            "chunk_number" => 1,
            "filesize" => filesize($file),
            "fn" => new CurlFile(realpath($file)),
            "finalize" => 1,
            "name" => "test",
            "contents" => $file,
    ];

var_dump(
    explode(";",$Curl->request(
            'POST', "http://".$upload_server, ["multipart" => [$vars], 'cookies' => $jar])
               ->getBody()));
// outputs *** EXCEPTION session creation/reuse failed - 09-3-2017, 3:05 am ***

Я предполагаю, что я делаю что-то не так с файлами cookie. Они устанавливаются как var_dump($jar);. API Docs: http://www.share-online.biz/uploadapi

4b9b3361

Ответ 1

Прежде всего, вы должны вызвать ...->getBody()->getContents(), чтобы получить строку. Или приведите объект тела к строке: (string) ...->getBody().

Тогда вы не можете использовать класс CurlFile. Используйте fopen(), чтобы получить дескриптор файла и передать его прямо в Guzzle, например в документах. Обратите внимание, что для загрузки файлов вы должны использовать multipart вместо form_params.