如何在Kohana 3中执行外部请求?

时间:2010-04-15 03:11:46

标签: php curl kohana kohana-3

我总是把cURL用于这类东西,但this article让我觉得我可以使用Kohana 3中的Request对象轻松地请求另一个页面。

    $url = 'http://www.example.com';

    $update = Request::factory($url);

    $update->method = 'POST';

    $update->post = array(
        'key' => 'value'
    );  

    $update->execute();
    echo $update->response;

但是我收到了错误

Accessing static property Request::$method as non static

从这里我可以假设它意味着方法方法是静态的,但这对我没有多大帮助。我也复制并粘贴了那篇文章的例子,它也犯了同样的错误。

基本上,我正在尝试POST到外部服务器上的新页面,并以Kohana的方式进行。

那么,我是否正确地这样做,或者我应该只使用cURL(或file_get_contents()使用上下文)?

3 个答案:

答案 0 :(得分:10)

我不知道这是在OP使用Kohana 3.0时是否最初写的,但主要版本Kohana 3.1使这更容易做到。 Remote :: get()已弃用(并且开始时效果不佳)。要在Kohana 3.1中实现这一点很简单,你几乎已经拥有它了:

$url = 'http://www.example.com';

$request = Request::factory($url)
    ->method('POST')
    ->post('key', 'value');

$response = $request->execute();

echo $response->body();

我移动了一些东西,以利用链接语法的简洁性。通过响应,您还可以检查响应代码。有关详细信息,请参阅RequestRequest_Client_External的3.1 API文档(处理这些外部即不是应用内请求。

答案 1 :(得分:4)

请在底部阅读

  

此示例中使用的请求类   目前可作为一部分提供   Kohana核心开发分支   我的个人github帐户,可以   从中获得   http://github.com/samsoir/core。如果   使用官方Kohana PHP 3.0   下载,自定义扩展   请求类是必需的。

另见this discussion

答案 2 :(得分:-2)

Request对象用于请求应用程序中的页面 。您不能将其用于外部URL。哦,你不必使用卷曲,你可以通过这样做更容易:

$page = file_get_contents('http://google.com');