php模拟POST请求的两种方法

转载 2015年07月08日 20:19:41

通过fsockopen函数

<?php
//模拟发送POST请求
$url = "http://localhost/Post/server.php";//要请求的服务器地址

//要请求的内容
$post_data['user']        =    "root";
$post_data['password']    =     "1988725";

//转换请求内容
foreach($post_data as $key => $value)
{
    $requestArray[] = $key.'='.urlencode($value);
}
$requestString    =    implode("&",$requestArray);

//url
$url_info    =    parse_url($url);

if(!isset($url_info['port']))
{
    $url_info['port']    =    80;
    //模拟http请求头
    $request    .=    "POST ".$url_info['path']." HTTP/1.1\n";
    $request    .=    "Host: ".$url_info['host']."\n";
    $request    .=    "Content-type: application/x-www-form-urlencoded\n";
     $request    .=    "Content-length: ".strlen($requestString)."\n";
    $request    .=    "Connection: close\n";
     $request    .=    "\n";
    $request    .=    $requestString."\n";
}

$fp = fsockopen($url_info["host"], $url_info["port"]);
fputs($fp, $request);//把HTTP头发送出去

$inheader = 1;
while(!feof($fp)) 
{
    //$result 是提交后返回的数据
    $result .= fgets($fp, 1024);
}
echo $result;
fclose($fp);


通过 crul


<?php
//要请求的内容
$post_data['user']        =    "root";
//$post_data['password']    =     "1988725"; 
$post_data['file']        =    '@C:\Documents and Settings\chenzhi\My Documents\My Pictures\1286606098_38.jpg';

///$post_data['file']    =     '@'.$_FILES['image']['tmp_name'];
$ch        =    curl_init();
$curl_url    =    "http://172.16.27.51/server.php";
curl_setopt($ch,CURLOPT_URL,$curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

//curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
//$curl_result = curl_exec($ch);
//echo $curl_result;

curl_exec($ch);

注意,通过curl传送图片时,一定要记住要加@号,且不能用双引号,只能用单引号

php模拟post提交请求,调用接口

/** * 模拟post进行url请求 * @param string $url * @param string $param */ function ...
  • yongzhen150
  • yongzhen150
  • 2015年10月21日 16:33
  • 2473

PHP模拟发送POST请求之一、HTTP协议头部解析

WEB开发中信息基本全是在POST与GET请求与响应中进行,GET因其基于URL的直观,易被我们了解,可POST请求因其信息的隐蔽,在安全的同时,也给开发者们模拟发送带来了麻烦。接下来的几篇博文中,我...
  • lizhi0524
  • lizhi0524
  • 2017年04月10日 11:43
  • 263

Python利用urllib/2模拟Http的Post请求调用php

一、应用需求         VSO平台的推广系统已接近尾声,还有最后一个问题就是每个月末对分红进行结账,将平台订单金额产生的分红打到用户的账户上,这种情况肯定要用Linux的定时任务来完成,结合前面...
  • houqingdong2012
  • houqingdong2012
  • 2013年10月21日 22:12
  • 4782

使用PHP模拟post提交数据

这也是个老生常谈的话题了,上午花了点时间把这个问题整理了一下。 一般来说用PHP来模拟post提交数据有三种方法,file_get_contents、curl和socket。 写了个公用函数,专门...
  • caiknife
  • caiknife
  • 2013年04月13日 12:03
  • 34427

php-curl(模拟post,设置header,接收json数据)

curl可以使用url的方式来模拟浏览器传输数据,是很有用的一个功能。curl的操作可以分为4步:1、初始化:curl_init() 2、设置属性值:curl_setopt() 3、执行:curl_e...
  • ljl890705
  • ljl890705
  • 2016年08月16日 12:02
  • 6402

PHP模拟GET和POST提交数据

/* *@param String $url是请求地址 *@param Array $getData 是GET数据 *@param Array $postData ...
  • risingsun001
  • risingsun001
  • 2014年11月04日 15:35
  • 1641

php http发送get、post请求的几种方法

方法1: 用file_get_contents 以get方式获取内容   方法2: 用fopen打开url, 以get方式获取内容 ...
  • u012366662
  • u012366662
  • 2016年10月12日 20:52
  • 7016

PHP中使用CURL实现GET和POST请求

一、什么是CURL? cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。使用PHP的cURL库可以...
  • muzi187
  • muzi187
  • 2016年11月28日 15:38
  • 2404

php 模拟post json数据,并进行解析

function Query_Version($url, $data_string,$token) { $ch = curl_init(); curl_setop...
  • fly__high
  • fly__high
  • 2015年05月07日 11:49
  • 1036

php:curl 模拟ajax登陆53后台 -1(模拟登陆)

登陆53后台,利用curl模拟ajax请求登陆,主要需要在头信息中添加ajax的标识和操作cookie...
  • No1_tiger
  • No1_tiger
  • 2017年04月27日 12:09
  • 1304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php模拟POST请求的两种方法
举报原因:
原因补充:

(最多只允许输入30个字)