先把
public static function request
改为
public function request
去掉静态
客户端使用
L("HttpCurl")->request('提交地址','post',array('a'=>'b'));
服务端接收POST值
$a = X("post.a");
//输出 b
txws2012 2016-12-28
请教一个问题,下面是一个curl的类库,现在想从A网站(相当于客户端)通过curl提交数据到B网站(服务端),那么B网站怎么可以获取A网站post的数组呢?最好能给一个简单的客户端跟服务端实例,就post数据然后服务端返回数据
<?php namespace Lib; class HttpCurl { /** * 模拟POST与GET请求 * * Examples: * ``` * HttpCurl::request('http://example.com/', 'post', array( * 'user_uid' => 'root', * 'user_pwd' => '123456' * )); * * HttpCurl::request('http://example.com/', 'post', '{"name": "peter"}'); * * HttpCurl::request('http://example.com/', 'post', array( * 'file1' => '@/data/sky.jpg', * 'file2' => '@/data/bird.jpg' * )); * * // windows * HttpCurl::request('http://example.com/', 'post', array( * 'file1' => '@G:\wamp\www\data\1.jpg', * 'file2' => '@G:\wamp\www\data\2.jpg' * )); * * HttpCurl::request('http://example.com/', 'get'); * * HttpCurl::request('http://example.com/?a=123', 'get', array('b'=>456)); * ``` * * @param string $url [请求地址] * @param string $type [请求方式 post or get] * @param bool|string|array $data [传递的参数] * @param array $header [可选:请求头] eg: ['Content-Type:application/json'] * @param int $timeout [可选:超时时间] * * @return array($body, $header, $status, $errno, $error) * - $body string [响应正文] * - $header string [响应头] * - $status array [响应状态] * - $errno int [错误码] * - $error string [错误描述] */ public static function request($url, $type, $data = false, $header = [], $timeout = 0) { $cl = curl_init(); // 兼容HTTPS if (stripos($url, 'https://') !== FALSE) { curl_setopt($cl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($cl, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($cl, CURLOPT_SSLVERSION, 1); } // 设置返回内容做变量存储 curl_setopt($cl, CURLOPT_RETURNTRANSFER, 1); // 设置需要返回Header curl_setopt($cl, CURLOPT_HEADER, true); // 设置请求头 if (count($header) > 0) { curl_setopt($cl, CURLOPT_HTTPHEADER, $header); } // 设置需要返回Body curl_setopt($cl, CURLOPT_NOBODY, 0); // 设置超时时间 if ($timeout > 0) { curl_setopt($cl, CURLOPT_TIMEOUT, $timeout); } // POST/GET参数处理 $type = strtoupper($type); if ($type == 'POST') { curl_setopt($cl, CURLOPT_POST, true); // convert @ prefixed file names to CurlFile class // since @ prefix is deprecated as of PHP 5.6 if (class_exists('\CURLFile') && is_array($data)) { foreach ($data as $k => $v) { if (is_string($v) && strpos($v, '@') === 0) { $v = ltrim($v, '@'); $data[$k] = new \CURLFile($v); } } } curl_setopt($cl, CURLOPT_POSTFIELDS, $data); } if ($type == 'GET' && is_array($data)) { if (stripos($url, "?") === FALSE) { $url .= '?'; } $url .= http_build_query($data); } curl_setopt($cl, CURLOPT_URL, $url); // 读取获取内容 $response = curl_exec($cl); // 读取状态 $status = curl_getinfo($cl); // 读取错误号 $errno = curl_errno($cl); // 读取错误详情 $error = curl_error($cl); // 关闭Curl curl_close($cl); if ($errno == 0 && isset($status['http_code'])) { $header = substr($response, 0, $status['header_size']); $body = substr($response, $status['header_size']); return array($body, $header, $status, 0, ''); } else { return array('', '', $status, $errno, $error); } } }
先把 public static function request 改为 public function request 去掉静态 客户端使用 L("HttpCurl")->request('提交地址','post',array('a'=>'b')); 服务端接收POST值 |
|
@admin:回复 #2 先把publicstaticfunctionrequest改为publicfunctionrequest去掉静态客户端使用L("HttpCurl")->request('提交地址','多谢老大指教!!!! |