0

需要在我的应用程序中请求一些代码两次。将请求url作为ajax调用,还需要在控制器中请求这个url(类似于hmvc)。我知道如何通过 curl 开发它,但我发现了另一种想法如何实现它,只需使用函数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 中检测到请求方法正常,但未传递参数。为什么这不是将参数传递给请求?我的代码中的错误在哪里?非常感谢任何答案。

4

2 回答 2

4

http_build_query 构建 application/x-www-form-urlencoded 内容。(不是应用程序/json)

有一个完整的例子:

如何使用 file_get_contents 在 PHP 中发布数据?

于 2013-10-10T15:01:00.143 回答
1

内容类型应该是application/x-www-form-urlencoded. 如果您想留下来application/json,请尝试使用file_get_contents("php://input").

于 2013-10-10T15:00:58.283 回答