2017-04-19 123 views
0

我有一个cURL命令,它在CLI(通过git Bash)中工作得非常好。见下:将cURL的语法转换为php cURL

curl -D- -k -o tvdata.xls -u adminid:adminpw -X GET -H "Content-Type: application/vnd.ms-excel" https://localhost/jira/sr/jira.issueviews:searchrequest-excel-current-fields/temp/SearchRequest.xls?jqlQuery=project+%3D+LPCCU+AND+type+%3D+Incident 

这个命令从我的JIRA导出excel文件(xls)中的所有问题。 现在我想将这个命令转换为php curl。我曾尝试下面这段代码:

$url = 'https://build.bnum.laposte.fr/jira/sr/jira.issueviews:searchrequest-excel-current-fields/temp/SearchRequest.xls?jqlQuery=project+%3D+LPCCU+AND+type+%3D+Incident'; 

    $username ='adminid'; 
    $password ='adminpw'; 

    $file = fopen('tvdata.xls', 'w'); 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/vnd.ms-excel")); 
    curl_setopt($ch, CURLOPT_NOPROGRESS, FALSE); 
    curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 15000); 
    curl_setopt($ch, CURLOPT_FILE, $file); 

    curl_exec($ch); 
    curl_close($ch); 

    fclose($file); 

但是当我运行此PHP代码,他创建一个只excel文件,但没有得到一个错误。如果有人可以找出这个问题,请?

在此先感谢

Achillix

+0

设置CURLOPT_RETURNTRANSFER为1 – diavolic

+0

@diavolic THX为您的答案,但没有变化 – achillix

回答

1

您是否尝试过使用在线转换器像一个this

从...

curl -D- -k -o tvdata.xls -u adminid:adminpw -X GET -H "Content-Type: application/vnd.ms-excel" https://localhost/jira/sr/jira.issueviews:searchrequest-excel-current-fields/temp/SearchRequest.xls?jqlQuery=project+%3D+LPCCU+AND+type+%3D+Incident 

...你:

// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/ 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "https://localhost/jira/sr/jira.issueviews:searchrequest-excel-current-fields/temp/SearchRequest.xls?jqlQuery=project+%3D+LPCCU+AND+type+%3D+Incident"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 

curl_setopt($ch, CURLOPT_USERPWD, "adminid" . ":" . "adminpw"); 

$headers = array(); 
$headers[] = "Content-Type: application/vnd.ms-excel"; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

$result = curl_exec($ch); 
if (curl_errno($ch)) { 
    echo 'Error:' . curl_error($ch); 
} 
curl_close ($ch); 

...您的示例代码,CURLOPT_URL和CURLOPT_HTTPHEADER相比是不同的,和其他一些选项未设置。

+0

thx为您的回应和你的帮助。转换器非常棒!我试过你的代码,现在我收到一条错误消息: 错误SSL证书问题:证书链中的自签名证书 cURL它是选项-k来证明SSL问题。任何想法? THX – achillix

+0

我已经添加了这2个选项,它的工作原理如下:curl_setopt($ ch,CURLOPT_SSL_VERIFYHOST,false); curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false);但你以99%解决了我的问题。非常感谢。干杯 – achillix