无法通过file_get_contents在post请求中发送数据

时间:2013-10-10 14:55:54

标签: php http post file-get-contents

需要在我的应用中两次请求一些代码。拳头请求url作为ajax调用,还需要在控制器中请求此url(类似于hmvc)。我知道如何通过curl开发这个,但是我发现了另一种想法如何实现它,只需在准备好的params之前使用函数 file_get_contents 。这是我的代码:

    // Setup limit per page
    $args['offset'] = $offset;
    $args['limit']  = $this->_perpage;
    // --

    // Convert search arguments to the uri format
    $data = http_build_query($args);

    // Define request params
    $options = array(
        'http' => array(
            'header'  => 'Content-type: application/json' . PHP_EOL .
                         'Content-Length: ' . strlen($data) . PHP_EOL,
            'method'  => 'POST',
            'content' => $data,
        ),
    );

    $context = stream_context_create($options);

    $result  = file_get_contents(
        'http://'.$_SERVER['HTTP_HOST'].'/search/items', FALSE, $context
    );

在请求的uri中检测到请求方法正常,但没有通过params。为什么这不是传递请求的参数?我的代码中的bug在哪里?非常感谢您的回答。

2 个答案:

答案 0 :(得分:4)

http_build_query构建application / x-www-form-urlencoded内容。 (不是申请/ json)

有一个完整的例子:

How to post data in PHP using file_get_contents?

答案 1 :(得分:1)

内容类型应为application/x-www-form-urlencoded。如果您想与application/json保持联系,请尝试使用file_get_contents("php://input")获取发布的数据。