多年来,我已经看到了许多使用 PHP 发布数据的方法,但我很好奇建议的方法是什么,假设有一个。或者也许有一种不言而喻但半普遍接受的方法。这也包括处理响应。
Jonathan Sampson
问问题
18810 次
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
我喜欢Zend Framework的Zend_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
没有真正的标准方法。在用于分发的代码中,我通常使用找到的第一个来检查cURL、file_get_contents和sockets 。它们中的每一个都支持 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 回答