-1
wget -d --header="Content-Type:application/xml" --post-data="$(cat <your xml file>)" http://sample.sample.com/api

PHPでこの関数を使用するにはどうすればよいですか?この関数からの応答も取得したいと思います。私はphpに変数を持っています実行可能なものはこのようなものです

$xml = '<sample>
    <Request target="test">
    </Request>
</sample>'

これは私が投稿したいxmlです。

私は次のことを試しました:

$url = 'sample.sample.com/api';;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "$(cat <".$xml.">)"); // receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo $server_output = curl_exec ($ch);
curl_close ($ch);

しかし、それはこのエラーを返しました:

XMLの解析に失敗しました:開始タグが必要です、'<'が見つかりません

4

2 に答える 2

1

PHPを使用したXMLの送受信で示されているのと同様のシナリオに従うことができるはずです。そのサイトの2番目の部分(XMLを送信するため)は、curlを使用して、wgetと同様のプロパティを持つこの操作を処理しますが、コマンドラインバイナリとパラメーターではなくPHPライブラリを利用します。寿命を延ばすために、サイトからのこのスニペットを含めます。

<?php
  /*
   * XML Sender/Client.
   */
  // Get our XML. You can declare it here or even load a file.
  $xml_builder = '
                  <?xml version="1.0" encoding="utf-8"?>
                  <Test>
                      <String>I like Bharath.co.uk!</String>
                  </Test>
                 ';
  // We send XML via CURL using POST with a http header of text/xml.
  $ch = curl_init('http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_builder);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($ch, CURLOPT_REFERER, 'http://www.bharath..co.uk');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $ch_result = curl_exec($ch);
  curl_close($ch);
  // Print CURL result.
  echo $ch_result;
?>
于 2013-03-23T14:17:11.200 に答える
0

そう思います ...

$cmd = "wget -d --header=\"Content-Type:application/xml\" --post-data=\"$(cat <your xml file>)\" http://sample.sample.com/api";
exec($cmd);
$outputfile = "dl.html";
echo file_get_contents($outputfile);
于 2013-03-23T14:17:42.487 に答える