PHP模拟http请求

2023-05-16

http://flandycheng.blog.51cto.com/855176/251752/
方法一:利用php的socket编程来直接给接口发送数据来模拟post的操作。


建立两个文件post.php,getpost.php
post.php内容如下:
<?php
 $flag = 0;
 $params = '';
 $errno = '';
 $errstr = '';
 //要post的数据
$argv = array(
    'var1'=>'abc',
    'var2'=>'how are you , my friend??');
//构造要post的字符串
foreach ($argv as $key=>$value) {
    if ($flag!=0) {
        $params .= "&";
        $flag = 1;
    }
    $params.= $key."="; $params.= urlencode($value);
    $flag = 1;
    }
    $length = strlen($params);
     //创建socket连接
    $fp = fsockopen("localhost",80,$errno,$errstr,10) or exit($errstr."--->".$errno);
    //构造post请求的头
    $header  = "POST /flandy/getpost.php HTTP/1.1\r\n";
    $header .= "Host:127.0.0.1\r\n";
    $header .= "Referer:/flandy/post.php\r\n";
    $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $header .= "Content-Length: ".$length."\r\n";
    $header .= "Connection: Close\r\n\r\n";
    //添加post的字符串
    $header .= $params."\r\n";
    


    //发送post的数据
    fputs($fp,$header);
    $inheader = 1;
    while (!feof($fp)) {
        $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据
        if ($inheader && ($line == "\n" || $line == "\r\n")) {
             $inheader = 0;
        }
        if ($inheader == 0) {
          echo $line;
        }
    }


fclose($fp);
?>
getpost.php的内容如下
<?php
echo "this is the data posted";
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
?>
结果输出:
this is the data posted
Array
(
    [var1] => abc
    [var2] => how are you , my friend??
)


以上代码在本机81端口下已经通过测试。
方法二:
使用PHP的curl扩展或HttpClient.class.php类,这两个非常类似,下面简单的列出curl的实现代码。
两个文件post2.php和getpost2.php
post2.php的内容如下:
<?php
$psecode = ’NDE005’;
$website = ’www.baidu.com’;
$amt = 1;
$pwd = 123456;
$ch = curl_init();
$curl_url = "http://localhost:80flandy/getpost2.php?web=" . $website .
"&pwd=" . $pwd . "&action=check&pseid=" . $psecode .
"&amt=" . $amt;
curl_setopt($ch, CURLOPT_URL, $curl_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//不直接输出,返回到变量
$curl_result = curl_exec($ch);
$result = explode(',', $curl_result);
curl_close($ch);
print_r($result);
?>
getpost2.php的内容如下:
<?php
echo "returndata<br>";
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
?>
结果输出:
Array ( [0] => returndata
Array
(
    [web] => ’wwwbaiducom’
    [pwd] => 123456
    [action] => check
    [pseid] => ’NDE005’
    [amt] => 1
)

方法三:这个要借助第三方类库HttpClient
可以到这里下载:http://scripts.incutio.com/httpclient/
<?php
require_once 'HttpClient.class.php’;
$params = array(’web’ => ’www.baidu.com’,
’pwd’ => ’123456’,
’action’ => ’check’,
’pseid’ => ’NDE005’,
’amt’ => 1);
$pageContents = HttpClient::quickPost(’http://localhost:81/flandy/getpost3.php’, $params);
$result = explode(’,’, $pageContents);
print_r($result);
?>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP模拟http请求 的相关文章

  • MongoDB 给出奇怪的连接错误

    我在使用 PHP 连接 MongoDB 时遇到问题 这是我的代码 这会产生以下错误 Fatal error Uncaught exception MongoConnectionException with message localhost
  • 在 php 中检测 iPad?

    如何向 iPad 查看者提供不同的页面 if SERVER HTTP USER AGENT Mozilla 5 0 iPad U CPU iPhone OS 3 2 like Mac OS X en us AppleWebKit 531 2
  • 无法在WordPress的functions.php中使用php fopen()函数

    我正在尝试简单地运行 fopen 函数 php 并且也尝试过test phpWordPress 模板文件 但这不起作用 如果我将 test php 文件和 csv 文件移动到主题文件夹之外的位置 那么它第一次可以工作 function cs
  • PHP 数组的最大键大小是多少?

    我正在生成关联数组 键值是 1 n 列的字符串连接 会回来咬我的钥匙有最大长度吗 如果是这样 我可能会停下来并采取不同的做法 它似乎仅受脚本内存限制的限制 快速测试后我得到了 128mb 的密钥 没问题 ini set memory lim
  • 如何完全刷新 CodeIgniter 中的页面?

    我正在叠加层中加载表单 覆盖层对于调用覆盖层的页面有一个单独的控制器和操作 在表单提交时 如果成功 我只想重新加载加载叠加层的引用页面 我可以加载引用页面 但它将内容放置在覆盖层内 header Location www example c
  • 联系表 7 根据用户选择立即发送给多个联系人

    您好 我正在 WordPress 联系表单 7 中创建联系表单 如果用户选择 全部 我想立即向多个收件人发送电子邮件 我看过这个 但似乎没有记录您是否可以一次发送给多个收件人http contactform7 com selectable
  • $_GET 作为 PHP 函数中的参数

    我有同样的问题 但是 我根据使用标头的 if 语句将用户重定向到通过函数构造的动态页面 为了使该函数正常工作 需要在标头的 GET 部分中传递参数 根据提供的答案 这是一种不好的做法 我应该用什么方式来做呢 function page ti
  • PHP,检查 URL 和文件是否存在?

    我为 WordPress 创建了一个插件 需要存在两个文件才能正常运行 第一个文件定义为文件系统路径 第二个文件定义为 URL 假设第一个文件是 home my site public html some folder required f
  • ZF2:如何将参数传递给转发插件,然后我可以在转发它们的方法中获取这些参数?

    我有一个 Action 方法Foo需要参数的控制器 public function fooAction one two a one b two 我需要从某些方法的其他方法转发到该方法Boo控制器 这些参数之一必须是引用参数 唯一的例子就是手
  • 如何使用 php 命令使注册表单高度安全?

    我想让代码对用户来说真正安全 下面的代码显示了 php 代码 我已将其用于我的网站 现在我已经使用了一些验证 例如密码和重复密码必须匹配 并且用户必须输入所有字段 为了使其更安全 我想插入安全命令 例如 PDO mysqli crypto
  • Nginx 与 phpmyadmin 登录后重定向错误

    我正在使用 nginx 设置 phpMyAdmin 我可以访问 phpMyAdminhttp localhost phpmyadmin http localhost phpmyadmin 但是 当我登录时 URL 被重定向到http loc
  • 如何自定义解析错误的 HTTP 400 响应?

    我编写了一个 REST API 服务 要求所有响应均为 JSON 但是 当 Go HTTP 请求解析器遇到错误时 它会返回 400 作为纯文本响应 而不会调用我的处理程序 例子 gt curl i H Authorization Basic
  • 在订单编辑页面添加自定义元框并将其显示在客户订单页面上

    在 WooCommerce 中 想要在 WooCommerce 管理订单页面上添加自定义元框 在此框中 我只想在保存到该订单的文本字段中输入跟踪号码 然后在客户查看订单页面上 我想显示一个按钮 用于打开带有跟踪信息的模式 该模式只会拉入一个
  • Drupal:*.api.php 中的 hook_ 函数是否被调用过?

    在 Drupal 7 中 每个核心模块都有一个 api php文件 其中 是模块的名称 例如 modules node node api php modules path path api php 这些文件有什么用 它们包含以以下开头的函数
  • 原始 POST 数据是什么?

    我试图理解原始 POST 数据的含义 PHP 手册页 HTTP RAW POST DATA http php net manual en reserved variables httprawpostdata php只是声明这个变量包含Raw
  • 如何在服务器(无 GUI)上呈现网页以进行打印?

    我正在尝试使用 PHP 脚本将页面实用地打印到办公室打印机 这是我到目前为止所得到的 我在服务器上安装了一台打印机 我可以通过命令行的打印命令使用 PHP 向其发送作业 我还可以使用 PHP 脚本编写纯文本文件 然后将它们添加到打印提示中
  • 设置基于 PHP 定时器的函数

    我有一个 php 文件test php 我想要echo or print5 秒后 即在浏览器调用 加载或打开 php 文件后不久 成功 顺便说一句 有时我可能想在特定的时间间隔后执行 初始化某些函数 如何使用 php 执行面向时间的任务 例
  • 从php字符串中删除奇怪的字符

    这就是我现在所拥有的 将 RSS feed 绘制到 php 中 RSS feed 中的原始 xml 如下所示 Paul 8217 s Confidence 到目前为止我拥有的 php 是这样的 newtitle item gt title
  • 一个模型中的多个表 - Laravel

    我的索引页使用数据库中的 3 个表 索引滑块 索引特征 页脚框 我使用一个控制器 IndexController php 并像这样调用三个模型 public function index return View make index gt
  • 用 PDO 和准备好的语句替换 mysql_* 函数

    我总是做简单的连接mysql connect mysql pconnect db mysql pconnect host user pass if db echo strong Error strong Could not connect

随机推荐

  • ubuntu 查看usb设备

    原文地址 xff1a https zhidao baidu com question 1823163553720250108 html 感谢原作者分享 查看 USB 设备 使用的是哪个串口 ls l dev ttyUSB 查看 USB 设备
  • 惯导姿态角的解释和固定的变换公式

    psi tr jk 61 atan2 2 q 2 q 3 43 q 1 q 4 1 2 q 3 q 3 2 q 4 q 4 theta tr jk 61 asin 2 q 1 q 3 q 2 q 4 gamma tr jk 61 atan2
  • 这是我的C语言入门笔记。

    c语言入门 C语言一经出现就以其功能丰富 表达能力强 灵活方便 应用面广等特点迅速在全世界普及和推广 C语言不但执行效率高而且可移植性好 xff0c 可以用来开发应用软件 驱动 操作系统等 C语言也是其它众多高级语言的鼻祖语言 xff0c
  • matlab randn函数产生高斯随机噪声

    randn N 1 就是产生服从方差为1 xff0c 均值为0 xff08 即N 0 1 xff09 的Gaussian分布的NX1随机 噪音矩阵 xff0c 根据Gaussian概率密度函数的特性 xff0c 产生均值为5 xff0c 标
  • socket 发送结构体数据

    Socket中的send函数可以发送字符串 xff0c 但不能直接发送结构体 xff0c 因此在发送端先把结构体转成字符串 xff0c 然后用send发送 xff0c 在接收端recv字符串 xff0c 再转换成原先的结构体 xff0c 这
  • printf()函数详解

    感谢博主的分享 xff1a https me csdn net blog K346K346 1 printf 简介 printf 是C语言标准库函数 xff0c 用于将格式化后的字符串输出到标准输出 标准输出 xff0c 即标准输出文件 x
  • 导航系统中常用坐标系

    转自 xff1a 阿元老师UJN的博客 http blog sina com cn xywatersky 1 地心惯性坐标系 xff08 简称i系 xff09 OXiYiZi xff1a 原点在地球中心 xff0c 它不参与地球自转 xff
  • mavlink模块中接收offboard模式下的mavlink消息流

  • 本地SVN服务器的搭建(WINDOWS环境)

    1 下载安装 VISUALSVN SERVER 1 1下载地址 xff1a https www visualsvn com server download 1 2下载完成后 xff0c 双击安装 2 下载安装 TortoiseSVN 1 1
  • 微信第三方平台全网发布流程

    版权声明 xff1a 本文为博主原创文章 xff0c 遵循 CC 4 0 BY SA 版权协议 xff0c 转载请附上原文出处链接和本声明 本文链接 xff1a https blog csdn net weixin 35829542 art
  • 百度短地址 API接口 985.so 是一个免费且好用的短地址

    文档URL http help baidu com question prod en 61 webmaster amp class 61 CD F8 D2 B3 CB D1 CB F7 CC D8 C9 AB B9 A6 C4 DC amp
  • Python图形GUI工具包tkinter如何调整元件在窗口中的位置几何布局管理

    Tkinter中的GUI总是有一个root窗口 不管你是主动或者别动获得 主窗口就是你的程序开始运行的时候创建的 在主窗口中你通常是放置了你主要的部件 另外 Tkinter脚本可以依据需要创建很多独立的窗口 主要的方法就是通过创建Tople
  • Mysql数据库的使用总结之ERROR 1146 (42S02)

    在使用 mysql 数据库过程中 xff0c 遇到了错误 ERROR 1146 42S02 xff1a Table doesn t exist xff0c 经过了两天 xff0c 终于解决了这个问题 引起该错误的原因不同 xff0c 对应的
  • 电子专业必懂的焊接知识与技能!

    点击上方 大鱼机器人 xff0c 选择 置顶 星标公众号 福利干货 xff0c 第一时间送达 焊接贴片元件需要的常用工具 让我们来了解一些常用的焊接贴片元件所需的一些基本工具 xff08 见图1 xff09 图1 手工焊接贴片元件所用到常用
  • HTTP消息中header头部信息的讲解

    HTTP Request的Header信息 1 HTTP请求方式 如下表 xff1a GET 向Web服务器请求一个文件 POST 向Web服务器发送数据让Web服务器进行处理 PUT 向Web服务器发送数据并存储在Web服务器内部 HEA
  • HTTP 状态码

    HTTP状态码 当浏览者访问一个网页时 xff0c 浏览者的浏览器会向网页所在服务器发出请求 当浏览器接收并显示网页前 xff0c 此网页所在的服务器会返回一个包含HTTP状态码的信息头 xff08 server header xff09
  • HTTP请求的header头解析

    Request Headers xff1a 下图是我访问一个URL xff1a http www hzau edu cn 的一个 header 根据具体实例来分析一下各部分的功能及其作用 Accept 作用 xff1a 浏览器端可以接受的媒
  • http请求消息体和响应消息体

    http www cnblogs com mydomain archive 2012 11 05 2754487 html HTTP 基于请求与响应模式的 无状态的 应用层的协议 xff0c 常基于TCP 的连接方式 HTTP 允许传输任意
  • HTTP Header 详解

    HTTP Header 详解 HTTP xff08 HyperTextTransferProtocol xff09 即超文本传输协议 xff0c 目前网页传输的的通用协议 HTTP协议采用了请求 响应模 型 xff0c 浏览器或其他客户端发
  • PHP模拟http请求

    http flandycheng blog 51cto com 855176 251752 方法一 xff1a 利用php的socket编程来直接给接口发送数据来模拟post的操作 建立两个文件post php getpost php po