开发者

How to perform an external request in Kohana 3?

I've always used cURL for this sort of stuff, but this article got me thinking I could request another page easily using the Request object in Kohana 3.

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

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

    $update->method = 'POST';

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

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

However I get the error

Accessing static 开发者_运维问答property Request::$method as non static

From this I can assume it means that the method method is static, but that doesn't help me much. I also copied and pasted the example from that article and it threw the same error.

Basically, I'm trying to POST to a new page on an external server, and do it the Kohana way.

So, am I doing this correctly, or should I just use cURL (or file_get_contents() with context)?


I don't know if this was initially written when the OP was using Kohana 3.0, but the major release Kohana 3.1 has made this significantly easier to do. The Remote::get() is deprecated (and wasn't that good to begin with). To accomplish this in Kohana 3.1 is a simple matter, and you pretty much had it:

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

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

$response = $request->execute();

echo $response->body();

I moved some stuff around to take advantage of the succinctness of the chaining syntax. With the response, you can check the response code as well. For more information read the 3.1 API docs for Request and Request_Client_External (which handles these external i.e. not within-app requests.


Just read this at the bottom

The request class used in this example is currently available as part of a Kohana Core development branch within my personal github account, which can be obtained from http://github.com/samsoir/core. If using the official Kohana PHP 3.0 download, a custom extension of the request class is required.

Also see this discussion.


The Request object is used to request pages within your application. You can't use it for external URLs. Oh, and you don't have to use curl, you can make it easier by doing this:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜