Kohana 3 harici bir isteği gerçekleştirmek için nasıl?

3 Cevap php

Ben her zaman bu türden şeylere için cURL kullanılan, ancak this article I Kohana 3 Request nesnesi kullanarak kolayca başka bir sayfayı talep düşünüyordum beni var.

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

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

    $update->method = 'POST';

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

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

Ben hata alıyorum Ancak

Accessing static property Request::$method as non static

Bu ben bu yöntem yöntem statik olduğu anlamına gelir, ama bu bana çok yardımcı olmuyor varsayabiliriz. Ben de kopyalanan ve bu makaleden örnek yapıştırılan ve aynı hatayı attı.

Temelde, ben harici bir sunucuda yeni bir sayfaya POST çalışıyor, ve bunu Kohana şekilde yapmak ediyorum.

Yani, doğru bunu duyuyorum, ya da ben sadece (bağlam ya file_get_contents()) cURL kullanmalıyım?

3 Cevap

OP Kohana 3.0 kullanıyordum bu ilk yazılmış olmadığını bilmiyorum, ama büyük sürümü Kohana 3.1 yapmak için bu önemli ölçüde kolaylaştırdı. Uzaktan :: get () deprecated (ve başlamak için iyi değildi). Kohana 3.1 bunu gerçekleştirmek için basit bir mesele olduğunu ve hemen hemen vardı:

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

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

$response = $request->execute();

echo $response->body();

Ben zincirleme sözdizimi özlülük yararlanmak için etrafında bazı şeyler taşındı. Yanıt ile, siz de yanıt kodunu kontrol edebilirsiniz. Daha fazla bilgi için, bu dış değil yani içinde-app istekleri kolları Request ve Request_Client_External için 3.1 API docs (okuyun.

Sadece alt kısmında bu okuyun

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.

Ayrıca bkz: this discussion.

Request nesnesi isteği sayfalarından için kullanılan within your application. Dış URL'ler için bunu kullanamaz. Oh, ve bunu yaparak daha kolay yapabilirsiniz, curl kullanmak zorunda değilsiniz:

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