2013-08-22 153 views
1

我想將以下命令行CURL實現爲PHP CURL請求。如何將命令行CURL實現爲PHP CURL請求

curl --data username=ekansh&domain=siteURL&password=mypass 
http://siteURL:8090/add-user -k -v -u apiuser:yru3472825fhj 

我曾嘗試下面的代碼是一樣的:

$fields = array('domain'=> 'siteURL','password'=> 'mypass','apiuser'=> 
'yru3472825fhj','username'=> 'ekansh'); 
    $data=>array(CURLOPT_POST => 1,CURLOPT_HEADER => 0,CURLOPT_URL => 
$url,CURLOPT_FRESH_CONNECT => 1,CURLOPT_RETURNTRANSFER => 1,CURLOPT_FORBID_REUSE => 
1,CURLOPT_TIMEOUT => 4,CURLOPT_POSTFIELDS => http_build_query($_POST)); 
    $ch = curl_init(); 
    $options=$fields+$defaults; 
    curl_setopt_array($ch,$options); 
    $result=curl_exec($ch) 
    curl_close($ch); 

但這不是工作..我沒有得到在$ result中任何迴應。我怎麼能實現上面的代碼?

UPDATE

$fields = array('domain' => 'siteurl','password' => 'mypass', 
'apiuser'=> 'yru3472825fhj','username'=> 'ekansh'); 
    $data=array(CURLOPT_POST => 1,CURLOPT_HEADER => 0,CURLOPT_URL => 
    'siteurl',CURLOPT_FRESH_CONNECT => 1,CURLOPT_RETURNTRANSFER => 1, 
CURLOPT_FORBID_REUSE => 1,CURLOPT_TIMEOUT => 4, 
CURLOPT_POSTFIELDS => $fields); 
    $ch = curl_init(); 
    curl_setopt_array($ch,$data); 
    $result=curl_exec($ch); 
    curl_close($ch); 

我上面的代碼已經修改,但它仍然沒有工作。

+0

幾件事。 1)'+'似乎不適用於數組; 2)你可能會錯誤地將curl選項設置爲'$ options'而不是'$ data'。 – Passerby

+0

@Passerby請參閱上面更新 – Ekansh

回答

1

$data陣列,它應該是:

CURLOPT_POSTFIELDS => $fields 

並設置它應該是所有選項:

curl_setopt_array($ch, $data); 

這條線沒有做任何事情:

$options = $fields + $defaults; 

您不能在陣列上使用+,並且您從未設置過$defaults

對於認證,您需要使用的選項:

CURLOPT_USERPWD => 'apiuser:yru3472825fhj' 

,而不是把他們$data的。

+0

請參閱上文edit @Barmar – Ekansh

+0

請參閱有關驗證的其他解答。 – Barmar