2017-09-03 30 views
10
Ben guzzle saf CURL taşımak istediğini

gibi davrandığını değil, ama API çağrıları doğru kayıtlı edilmiyor. (Buradan Sınıf: https://stackoverflow.com/a/7716768/8461611)guzzle CURL

Çalışma CURL

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

Şimdi guzzle şeyler

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

ben kurabiye yanlış bir şey yapıyorum varsayalım. var_dump($jar); gösterileri olarak ayarlanıyorlar. API Dokümanlar: http://www.share-online.biz/uploadapi

+0

'CURL' sınıfı nedir? Bu nereden geliyor? – Phil

+0

@Phil https://stackoverflow.com/a/7716768/8461611 implictly yapılır dizeye döküm edilebileceğini yazı – rndus2r

cevap

-1

Her şeyden önce, bir ip almak için ...->getBody()->getContents()'u aramanız gerekir. Veya gövde nesnesini bir dizeye yayınlayın: (string) ...->getBody().

Sonra CurlFile sınıfını kullanamazsınız. Bir dosya tanıtıcısı almak ve in the docs gibi Guzzle'a doğrudan aktarmak için fopen() kullanın. Dosya yüklemeleri için form_params yerine multipart'u kullanmanız gerektiğine dikkat edin.

+0

getBody(), (http://guzzle3.readthedocs.io/http-client/ da düzenleme gör response.html # yanıt-vücut); $ file, bu durumda, dokümanlara izin verilmesi gereken bir dizedir. Ancak fopen() ile sarıldığında hiçbir şey değişmedi. Ne yazık ki yukarıdaki gibi aynı hata. multipart ayarlanır. – rndus2r

+0

@ rndus2r, Guzzle 6 kullanıyorsunuz, ancak belgeler Guzzle 3 içindir. Lütfen buna dikkat edin. Ben CurlFile' 'bahsederken –

+0

, bu parametreyi geliyordu:' "fn" => Yeni CurlFile (realpath ($ dosya)), '. http://docs.guzzlephp.org/en/stable/quickstart.html#using-responses Ben İkincisini verecektir : –