2017-09-03 7 views
10

純粋なCURLからGuzzleに移行したいが、API呼び出しが正しく登録されていない。 (ここからクラス:https://stackoverflow.com/a/7716768/8461611GuzzleがCURLのように動作しない

ワーキング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 

今がつがつ食うもの

... 
$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クラスは使用できません。ファイルハンドルを取得してin the docsのようにGuzzleに直接渡すにはfopen()を使用してください。ファイルアップロードの場合、form_paramsの代わりにmultipartを使用する必要があります。

+0

getBody()は暗黙のうちにstringにキャストできます(http://guzzle3.readthedocs.io/http-client/ response.html#response-body); $ fileはこの場合の文字列であり、docsによると許可されるべきです。しかし、fopen()で囲まれても何も変わりませんでした。上記と同じエラーが悲しいです。マルチパートが設定されます。 – rndus2r

+0

@ rndus2r、あなたはGuzzle 6を使用していますが、Guzzle 3のためのドキュメントです。これに注意してください。 –

+0

私が 'CurlFile'について話していたとき、私はこのパラメータを意味しました:' 'fn" =>新しいCurlFile(realpath($ file))、 '。 –

関連する問題