現在あるAPIにPUTでファイル(csv)を送信する作業をしています。
ただ、あと一歩でファイルを送信できていない状況です。
phpで送信テストをする前にjava(Android)で送信テストを行いなんとかそちらは成功しました。
その時にもハマったのですが、chunked送信を優先させる?コードを記入していたせいでAPIサーバー側が受け付けない(エラー400番)ものでした。
現在PHPでも400番が表示されているので、この辺りだろうとリクエスト内容を見るとやはり
Transfer-Encoding: chunked が付いていました。。。
このヘッダーを消す、または別の回避方法はあるのでしょうか?
(ちなみに、このヘッダーが本当に悪いのかは定かではありません)
以下にコードを記載します。
その他の間違いやアドバイスもありましたら、教えていただけると幸いです。よろしくおねがいします。
php
1上略 2: 3: 4 5 $file_path = 'myfile.csv'; 6 $data = makeCurlFile($file_path); //makeCurlFileにはnew CURLFile の作業をメソッド化したものが入っています。 7 $csvdata = array('csvfile' => $data ); 8 9 $header = ['サーバーが必要としているもの:'.$version(必要なものが入っている変数),'サーバーが必要としているもの:'.$type(必要なものが入っている変数),'Content-Length:'.filesize($file_path),]; 10 11 //cURLのセッションを初期化 12 $curl=curl_init(); 13 curl_setopt($curl, CURLOPT_URL, $url); //URLをセット 14 curl_setopt($curl, CURLOPT_PUT, true); //PUT通信 15 //putでファイルを送信するために加工 16 curl_setopt($curl,CURLOPT_INFILESIZE,filesize($file_path)); 17 $handle = fopen($file_path,'r'); 18 curl_setopt($curl,CURLOPT_INFILE,$handle); 19 curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT"); 20 21 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); //レスポンスデータを受け取るか設定 22 curl_setopt($curl, CURLOPT_HTTPHEADER, $header); //ヘッダーに値をセット 23 curl_setopt($curl, CURLOPT_POSTFIELDS, $csvdata); //PUTする実際のデータをセット 24 curl_setopt($curl,CURLINFO_HEADER_OUT,true); //リクエストヘッダ出力設定 25 26 $result = curl_exec($curl); 27 $info = curl_getinfo($curl); 28 //リクエストヘッダ出力 29 echo curl_getinfo($curl,CURLINFO_HEADER_OUT); 30 echo ('ステータスコードは'.$info['http_code'].'!!!!!'); 31 32 // // 結果を表示する 33 var_dump($result); 34 //セッションを終了する 35 curl_close($curl);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 08:06
退会済みユーザー
2020/02/18 08:13
2020/02/18 08:18