Запуск curl с удаленного сервера с использованием PHP - PullRequest
1 голос
/ 02 мая 2011

У меня есть этот тип оператора curl

curl -u xxx: ггг -д "ааа = 111" http://someapi.com/someservice

Я бы хотел запустить эту переменную aaa = bbb из списка

ОБНОВЛЕНИЕ: Работающий код, построенный на коде Джимми

<?PHP
$data = array('Aaa', 'Bbb', 'Ccc');
echo $data;    
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); //Fixes the HTTP/1.1 417 Expectation Failed Bug

curl_setopt($ch, CURLOPT_USERPWD, "xxx:yyy");

foreach ($data as $param) {
    curl_setopt($ch, CURLOPT_URL, 'http://...?aaa='.$param);
    $response = curl_exec($ch);
    echo "<hr>".$response; 
}
?>

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

В Perl вы, вероятно, использовали бы LWP, как это содержится в стандартном дистрибутиве.

use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common;

my $host = 'localhost'; # 'someapi.com';
my $url  = "http://$host/someservice";

my $ua = LWP::UserAgent->new( keep_alive => 1 );
$ua->credentials( $host, 'your realm', 'fridolin', 's3cr3t' );

for my $val ( '111', '222', '333' ) {
    my $req = POST $url, [aaa => $val];
    $req->dump; # debug output
    my $rsp = $ua->request( $req );
    if ( $rsp->is_success ) {
        print $rsp->decoded_content;
    } else {
        print STDERR $rsp->status_line, "\n";
    }
}
2 голосов
/ 02 мая 2011

В PHP код выглядел бы по-другому, поскольку вы, вероятно, захотите использовать встроенный клиент cURL вместо exec() (отредактированный для включения цикла):

$data = array('111', '222', 'ccc');    

foreach ($data as $param)
{
    $ch = curl_init();

    $params = array('aaa' => $param);

    curl_setopt($ch, CURLOPT_URL, 'http://someapi.com/someservice');
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD, "xxx:yyy");

    /* used for POST
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    */

    // for GET, we just override the URL
    curl_setopt($ch, CURLOPT_URL, 'http://someapi.com/someservice?aaa='.$param);

    $response = curl_exec($ch);
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...