2011-10-19 114 views
1

這是我必須複製:轉換捲曲 - 從CLI到PHP

curl --basic 
    --user testuser:testuser 
    --form [email protected] 
    --form [email protected] 
    http://localhost:9263/repository/document 

這是我到目前爲止有:

$curl_handle=curl_init(); 
curl_setopt($curl_handle,CURLOPT_USERPWD, "user:pass"); 
curl_setopt($curl_handle,CURLOPT_URL, "http://localhost:9263/repository/document"); 
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl_handle,CURLOPT_POST, 1); 
$post = array("xml"=>"@e:/path_to_file/old.xml","data1"=>"@e:/path_to_file/new.xml"); 
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $post); 
$buffer = curl_exec($curl_handle); 
curl_close($curl_handle); 

貼現的事實API沒有返回一個錯誤,對API的調用似乎沒有做任何事情,我的CURL翻譯是否好?我只是試圖從等式中刪除一些東西。

編輯#1:雖然我消毒後(和刪除調試輸出),我已經刪除了$緩衝= curl.exec($ curl_handle)行...

編輯#2:每FANIS'的建議,我更換了文件調用

$old_xml_string = daisy_exec_query("http://localhost:9263/repository/document/8-Multimedia?branch=1&language=2"); 
//omited dom operations 
$new_xml_string = $dom->saveXML(); 
$curl_handle=curl_init(); 
curl_setopt($curl_handle,CURLOPT_USERPWD, "user:pass"); 
curl_setopt($curl_handle,CURLOPT_URL, "http://localhost:9263/repository/document"); 
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl_handle,CURLOPT_POST, 1); 
$post = array("xml"=>$old_xml_string,"data1"=>$new_xml_string); 
curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $post); 
$buffer = curl_exec($curl_handle); 
curl_close($curl_handle); 
+1

你錯過了'curl_exec()'來實際執行調用。除此之外,curl中的「@」運算符不能像PHP的curl函數afaik那樣工作,您需要將文件內容作爲字符串獲取到變量中。 – Fanis

+0

@Fanis在消毒過程中,我已經刪除了執行電話。我把它放回到我的例子中。 – TekiusFanatikus

+0

@Fanis發佈您的建議(張貼字符串而不是文件),我會接受它。我遇到了使用CLI的相同錯誤。因此,可以肯定地說,它現在按預期工作。謝謝! – TekiusFanatikus

回答

1

(如答案爲每TekiusFanatikus發帖評論

從捲曲‘@’運營商不會像在PHP工作的建議)捲曲功能包括文件的內容。您需要將文件內容作爲字符串存入變量,並將其傳遞到CURLOPT_POSTFIELDS中。