2017-09-03 70 views
10

我想從純CURL遷移到Guzzle,但API調用未正確註冊。Guzzle行爲不像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 

現在的狂飲東西

... 
$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 *** 

我認爲我做錯了與餅乾。他們被設置爲var_dump($jar);顯示。 API文檔:http://www.share-online.biz/uploadapi

+0

什麼是CURL類?這是從哪裏來的? – Phil

+0

@Phil https://stackoverflow.com/a/7716768/8461611請參閱編輯該文章 – rndus2r

回答

-1

首先,您必須致電...->getBody()->getContents()才能獲取字符串。或將身體對象轉換爲字符串:(string) ...->getBody()

然後,你不能使用CurlFile類。使用fopen()獲取文件句柄並將其直接傳遞給Guzzle,如in the docs。請注意,對於文件上傳,您必須使用multipart而不是form_params

+0

getBody()可以轉換爲字符串,這是隱含完成的(http://guzzle3.readthedocs.io/http-client/ response.html#response-body);在這種情況下,$ file是一個字符串,根據文檔,它應該被允許。但是用fopen()包裝起來沒有什麼變化。同樣的錯誤,如上所述。多部分設置。 – rndus2r

+0

@ rndus2r,你使用的是Guzzle 6,但是文檔是Guzzle 3.請注意這一點。 –

+0

當我在談論'CurlFile'時,我的意思是這個參數:''fn「=> new CurlFile(realpath($ file)),'。 –