Guzzle表现得不像CURL

rnd*_*s2r 11 php curl guzzle6

我想从纯CURL迁移到Guzzle,但API调用未正确注册.

工作CURL(来自此处的课程:https://stackoverflow.com/a/7716768/8461611)

...
$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
Run Code Online (Sandbox Code Playgroud)

现在是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 ***
Run Code Online (Sandbox Code Playgroud)

我假设我在做错饼干.它们被设定为var_dump($jar);节目.API文档:http://www.share-online.biz/uploadapi

Ale*_*kov 1

首先,您必须调用...->getBody()->getContents()以获取字符串。或者将 body 对象转换为字符串:(string) ...->getBody()

那么,你就不能使用CurlFile类。用于fopen()获取文件句柄并将其直接传递给 Guzzle,如文档中所示。请注意,对于文件上传,您必须使用multipart而不是form_params.