【问题标题】:Http post request using fopen使用 fopen 的 Http 发布请求
【发布时间】:2015-10-17 07:22:08
【问题描述】:

在第一个文件中——我执行的文件我有以下内容:

<?php   
$name = "Julia";
$article = "I like papers";
$url = "http://domain.com/process.php";
$param = array('http' => array(
          'method' => 'POST',
          'content' => $article

        ));

$mad = @stream_context_create($param);
$fp = @fopen($url, 'rb', false, $mad);
$response = @stream_get_contents($fp);
echo $response;
?>

在第二个文件http://domain.com/process.php我有这个:

<?php
$name = $_POST["name"];
$article = $_POST["content"];
$article = $_POST["article"];

echo $article;
echo $name;
echo "Hello there</br>:\n";

?>

我得到的输出只是:

 "Hello there"

那么出了什么问题,如何通过请求传递值 $article 和 $name 以及如何在文件 process.php 中提取它们?

【问题讨论】:

    标签: php http-post


    【解决方案1】:

    您在内容部分弄错了,使用http_build_query() 构建 POST 查询。

    $param = array( 'http' => array('method' => 'POST',
                                    'header' => "Content-type: application/x-www-form-urlencoded\r\n",
                                    'content' => http_build_query($data)
                                    ));
    

    您的帖子参数应该如下所示,其中输入名称为键

    $data['name'] = 'Julia';
    $data['article'] = 'I like papers';
    

    就个人而言,我会使用 curl。

    【讨论】:

    • 非常感谢。我仍然无法归档多线程 - 但这是另一个问题。
    • 您的意思是同时请求?有一个东西叫curl_multi_init。你可以查一下
    • 我也试过这个,它可以在任何地方工作,除了我需要它工作的服务器:) 这应该也可以,因为 fopen 应该是 asynchronius .. 我只调用 2 页。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    • 2021-09-23
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    相关资源
    最近更新 更多