2

多年来,我已经看到了许多使用 PHP 发布数据的方法,但我很好奇建议的方法是什么,假设有一个。或者也许有一种不言而喻但半普遍接受的方法。这也包括处理响应。

4

5 回答 5

3

虽然 Snoopy 脚本可能很酷,但如果您只想使用 PHP 发布 xml 数据,为什么不使用 cURL?它很简单,具有错误处理功能,并且是您包中已有的有用工具。下面是如何在 PHP 中使用 cURL 将 XML 发布到 URL 的示例。

// url you're posting to        
$url = "http://mycoolapi.com/service/";

// your data (post string)
$post_data = "first_var=1&second_var=2&third_var=3";

// create your curl handler     
$ch = curl_init($url);

// set your options     
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //ssl stuff
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:  application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// your return response
$output = curl_exec($ch); 

// close the curl handler
curl_close($ch);
于 2012-02-01T19:28:14.163 回答
1

除了使用socket之外, cURL是我所知道的唯一可靠的 POST 数据方式。

现在,如果您想通过 GET 发送数据,有几种方法:
cURL
套接字
file_get_contents
文件
和其他

于 2009-01-23T02:24:24.897 回答
1

您可以尝试Snoopy 脚本
它对不允许使用fopen 包装器
的托管服务提供商很有用, 我已经使用它几年来获取 RSS 提要。

于 2009-01-23T03:30:34.857 回答
1

我喜欢Zend FrameworkZend_Http_Client

它基本上使用stream_context_create()stream_socket_client()工作。

小例子:

$client = new Zend_Http_Client();
$client->setUri('http://example.org');
$client->setParameterPost('foo', 'bar')
$response = $client->request('POST');

$status = $response->getStatus();
$body = $response->getBody();
于 2009-01-23T09:55:30.820 回答
0

没有真正的标准方法。在用于分发的代码中,我通常使用找到的第一个来检查cURLfile_get_contentssockets 。它们中的每一个都支持 GET 和 POST,并且根据 PHP 版本和配置,它们中的每一个都可能可用或不可用(或工作)。

基本上是这样的:

function do_post($url, $data) {
  if (function_exists('curl_init') && ($curl = curl_init($url))) {
    return do_curl_post($curl, $data);
  } else if (function_exists('file_get_contents') && ini_get('allow_url_fopen') == "1") {
    return do_file_get_contents_post($url, $data);
  } else {
    return do_socket_post($url, $data);
  }
}
于 2009-01-23T08:30:31.800 回答