
質問させて頂きます。
XMLをAPIに送信する方法に関して質問させて頂きます。
まずはじめに、
以前(PHP5.2)は、下記の方法でXMLを送信することに成功していました。
-----------------------------------------------------------------
$xml = 'xml~~~~';
$curl = curl_init();
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 180);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $URL);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $xml);
curl_exec($curl);
curl_close($curl);
-----------------------------------------------------------------
PHP5.6環境で上記の方法を試した場合、接続はできているようなのですが、
XMLを正常に送れていないように思われます。
※全く関係無い場合は申し訳ありません。
自分なりに調べたところ、
PHP5.6以降はCURLFileクラスを利用するべきといった内容を見つけました。
しかし、CURLFileクラスの使用方法がいまいち分からず苦戦しております。
下に記述したものが実際に見つけた例です。
--------------------------------------------------------------------
// CURLFile オブジェクトを作ります
$cfile = new CURLFile('cats.jpg','image/jpeg','test_name');
// POST データを設定します
$data = array('test_file' => $cfile);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
--------------------------------------------------------------------
「cats.jpg」の部分にはファイルパスを記述するらしいのですが、今回xmlはファイルから読み込むのでなく、「$xml = 'xml~~~~';」といった感じで、その場で入力をするつもりでいます。
CURLFileではファイルとして存在するものしかアップロード出来ないのでしょうか。
また、「test_name」「test_file」の部分に何を記述して良いのかも分かりません。
「image/jpeg」の部分にはxmlのタイプを入れるのだと思います。
質問の内容に分かりづらい部分もあるかもしれませんが、
もし何かご存じの方がいらっしゃれば、ご教授のほどよろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
こんにちは。
私は普段cURL使わないので的確な回答ではないかも知れませんが、CURLFileを使うとmultipart/form-dataでのファイルアップロードになってしまうのではないでしょうか。
ちなみにマニュアルを見る限りでは、「test_name」は「どういうファイル名としてアップロードするか」で、「test_file」はPOSTデータのnameのようです。
マニュアル
http://php.net/manual/ja/curlfile.construct.php
ここまでの回答でたぶん違和感をもたれているかもしれませんが、その場合はやはり、アップロード(CURLFile)ではないのかもしれません。
ただ、普通のPOSTで送るにしても、一般的には下記例のように、nameとvalueのペアで送りますので、CURLOPT_POSTFIELDSにXMLをテキストで入力、というのも、違和感がある気がします。(xml内にnameとvalueの記載をされているのかもしれませんが、マニュアルを見る限りxml形式は対応の記載が無いような気がします)
(例)
http://deamu.hatenablog.com/entry/2015/02/11/214 …
ちなみにPHPからPOSTする方法の検討としてはこの辺もご参考になるかもしれません
http://www.programming-magic.com/20080226023511/
いずれにしても、もういちどAPIを再確認されてみてはいかがでしょうか。(あるいは、APIの情報を補足として記載されたら、他の方の回答の参考になると思います。)
以上、間違っていたらすみませんが、ご参考になれば幸いです!
ご丁寧に回答頂きありがとうございます。
とても参考になりましたので、こちらの回答を元に、再度対応してみたいと思います。
改めて、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) curlのオプション 1 2022/06/13 17:43
- オープンソース php-Laravelのインストールについて 1 2022/08/13 01:08
- ネットワーク 一台のサーバーに複数個のIPアドレスを追加出来る事は知っていますが、具体的にどうやるのでしょうか? 4 2022/11/03 20:12
- UNIX・Linux UbuntuにROSをインストールしたい 1 2023/03/06 12:28
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
- WordPress(ワードプレス) ワードプレスにて .xmlファイルの使い方をご存知の方、よろしくお願いいたします。 2 2022/09/30 00:55
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ファイルアップロードの上限を...
-
FTPClientで転送結果(OKかFAIL)
-
SmartyでHTMLソースの変更が反...
-
ファイルのアップロードで、フ...
-
「クラウドにアップロード」」...
-
one drive のアップロード失敗...
-
ファイルをGET送信でアップロー...
-
onedrive にexcelファイルをア...
-
画像ファイルの名前をそのままU...
-
PHPのif文でその処理を途中で抜...
-
FTPコマンドでディレクトリごと...
-
フォントの色を変えるには?
-
Subversionのリポジトリの削除
-
PHPで`headers already sent`と...
-
サーバーによってはmb_send_mai...
-
「include()」関数の使い方につ...
-
SELECTの値を保持する
-
UWSCにつきまして
-
VB2008でFTPでのディ...
-
リンク先を隠す方法はないでし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
「クラウドにアップロード」」...
-
ftpでアップロードが出来ない
-
ファイルサイズがpost_max_size...
-
ファイルアップロードしたもの...
-
FTPClientで転送結果(OKかFAIL)
-
unlinkでどうしてもファイルが...
-
VBでクラウドストレージにア...
-
ファイルのアップロード
-
movabletypeでPDFファイルをア...
-
phpファイルの編集について
-
BASP21のFTPで日本語ファイル名...
-
違法アップロードについて
-
掲示板のアイコンについて
-
ファイルのアップロードが、ど...
-
SmartyでHTMLソースの変更が反...
-
Googleドキュメントについて教...
-
HTMLファイルのアップロードに...
-
お悩み相談です(※長文な上にか...
-
gif画像をアップロードするには?
おすすめ情報
今「curl_getinfo($curl)」内容を出力したところ
[upload_content_length]が「float 1257」と表示されました。
これはXMLは正常に送信されてるということなのでしょうか。