700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > PHP实现支持GET POST Multipart/form-data的HTTP请求类【PHP】

PHP实现支持GET POST Multipart/form-data的HTTP请求类【PHP】

时间:2020-08-01 22:20:31

相关推荐

PHP实现支持GET POST Multipart/form-data的HTTP请求类【PHP】

后端开发|php教程

PHP,HTTP,请求,类

后端开发-php教程

本文实例讲述了PHP实现支持GET,POST,Multipart/form-data的HTTP请求类及其应用,分享给大家供大家参考。具体如下:

access数据操作源码,vscode中文是乱码,安装ubuntu出错,tomcat内存溢出 预警,sqlite3判断是否存在,主题网络爬虫关键词的确定,php过滤 数字,江干区seo整站优化方案,分享软件资源的网站,dede模板如何做lzw

HttpRequest.class.php类文件如下:

手机导航php源码,vscode退出禅模式,ubuntu禁用更新,项目打包tomcat,安卓读取sqlite图片,家里有圆形小爬虫非常小,php百度蜘蛛,南昌公司seo优化,健身会所网站源码,网页圆角矩形代码,bootstrap h5页面模板lzw

_ip = isset($config[ip])? $config[ip] : \;$this->_host = isset($config[host])? $config[host] : \;$this->_url = isset($config[url])? $config[url] : \;$this->_port = isset($config[port])? $config[port] : \;$this->_errno = isset($config[errno])? $config[errno] : \;$this->_errstr = isset($config[errstr])? $config[errstr] : \;$this->_timeout = isset($confg[ imeout])? $confg[ imeout] : 15;// 如没有设置ip,则用host代替if($this->_ip==\){ $this->_ip = $this->_host;} } // 设置表单数据 public function setFormData($formdata=array()){$this->_formdata = $formdata; } // 设置文件数据 public function setFileData($filedata=array()){$this->_filedata = $filedata; } // 发送数据 public function send($type=get){$type = strtolower($type);// 检查发送类型if(!in_array($type, array(get,post,multipart))){ return false;}// 检查连接if($this->connect()){ switch($type){ case get: $out = $this->sendGet(); break;case post: $out = $this->sendPost(); break;case multipart: $out = $this->sendMultipart(); break; } // 空数据 if(!$out){ return false; } // 发送数据 fputs($this->_fp, $out); // 读取返回数据 $response = \; while($row = fread($this->_fp, 4096)){ $response .= $row; } // 断开连接 $this->disconnect(); $pos = strpos($response, "\r\n\r\n"); $response = substr($response, $pos+4); return $response;}else{ return false;} } // 创建连接 private function connect(){$this->_fp = fsockopen($this->_ip, $this->_port, $this->_errno, $this->_errstr, $this->_timeout);if(!$this->_fp){ return false;}return true; } // 断开连接 private function disconnect(){if($this->_fp!=null){ fclose($this->_fp); $this->_fp = null;} } // get 方式,处理发送的数据,不会处理文件数据 private function sendGet(){// 检查是否空数据if(!$this->_formdata){ return false;}// 处理url$url = $this->_url.?.http_build_query($this->_formdata);$out = "GET ".$url." http/1.1\r\n";$out .= "host: ".$this->_host."\r\n";$out .= "connection: close\r\n\r\n";return $out; } // post 方式,处理发送的数据 private function sendPost(){// 检查是否空数据if(!$this->_formdata && !$this->_filedata){ return false;}// form data$data = $this->_formdata? $this->_formdata : array();// file dataif($this->_filedata){ foreach($this->_filedata as $filedata){ if(file_exists($filedata[path])){ $data[$filedata[ ame]] = file_get_contents($filedata[path]); } }}if(!$data){ return false;}$data = http_build_query($data);$out = "POST ".$this->_url." http/1.1\r\n";$out .= "host: ".$this->_host."\r\n";$out .= "content-type: application/x-www-form-urlencoded\r\n";$out .= "content-length: ".strlen($data)."\r\n";$out .= "connection: close\r\n\r\n";$out .= $data;return $out; } // multipart 方式,处理发送的数据,发送文件推荐使用此方式 private function sendMultipart(){// 检查是否空数据if(!$this->_formdata && !$this->_filedata){ return false;}// 设置分割标识srand((double)microtime()*1000000);$boundary = ---------------------------.substr(md5(rand(0,32000)),0,10);$data = --.$boundary."\r\n";// form data$formdata = \;foreach($this->_formdata as $key=>$val){ $formdata .= "content-disposition: form-data; name=\"".$key."\"\r\n"; $formdata .= "content-type: text/plain\r\n\r\n"; if(is_array($val)){ $formdata .= json_encode($val)."\r\n"; // 数组使用json encode后方便处理 }else{ $formdata .= rawurlencode($val)."\r\n"; } $formdata .= --.$boundary."\r\n";}// file data$filedata = \;foreach($this->_filedata as $val){ if(file_exists($val[path])){ $filedata .= "content-disposition: form-data; name=\"".$val[ ame]."\"; filename=\"".$val[filename]."\"\r\n"; $filedata .= "content-type: ".mime_content_type($val[path])."\r\n\r\n"; $filedata .= implode(\, file($val[path]))."\r\n"; $filedata .= --.$boundary."\r\n"; }}if(!$formdata && !$filedata){ return false;}$data .= $formdata.$filedata."--\r\n\r\n";$out = "POST ".$this->_url." http/1.1\r\n";$out .= "host: ".$this->_host."\r\n";$out .= "content-type: multipart/form-data; boundary=".$boundary."\r\n";$out .= "content-length: ".strlen($data)."\r\n";$out .= "connection: close\r\n\r\n";$out .= $data;return $out; } } // class end ?>

demo示例程序如下:

cutecom 源码,vscode运行c语言秒退,Webi安装ubuntu,tomcat优化性能,爬虫活动名称,php生成json字符串,惠州百度seo找哪里lzw

\, // 如空则用host代替 host => \, port => 80, errno => \, errstr => \, imeout => 30, url => /getapi.php, //url => /postapi.php, //url => /multipart.php ); $formdata = array( ame => fdipzone, gender => man ); $filedata = array( array( ame => photo,filename => photo.jpg,path => photo.jpg ) ); $obj = new HttpRequest(); $obj->setConfig($config); $obj->setFormData($formdata); $obj->setFileData($filedata); $result = $obj->send(get); //$result = $obj->send(post); //$result = $obj->send(multipart); echo

; print_r($result); echo

;

?>

完整实例代码可以点击此处本站下载。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。