2017-05-28 65 views
0

我试图使用REST API和PHP7
95%肯定,我需要这样的使用PHP7和卷曲通过API

curl -s -XPOST 'http://jenkins/job/FolderName/createItem?name=yourJobName' --data-binary @config.xml -H "Content-Type:text/xml" --user user.name:YourAPIToken 

的要求,但我总是创造詹金斯工作创造詹金斯工作诸如“无法保存config.xml”和“内容在prolog中不被允许”之类的错误。我的猜测是,问题出现是因为我没有使用--data-binary param
我只是无法弄清楚如何在php 7中使用“new CurlFile
为了理解,这里是我的代码:

$url = static::$host.'/job/'.$folderName.'/createItem?name='.$jobname; 
$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_POST, 1); 
curl_setopt($curl, CURLOPT_POSTFIELDS, Array('file' => new CurlFile($xmlConfigurationFile))); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_USERPWD, static::$user.":".static::$pass); 
$headers = array('Content-Type: text/xml'); 
if ($jenkins->areCrumbsEnabled()){ 
    $headers[] = $jenkins->getCrumbHeader(); 
} 
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); 
$response = curl_exec($curl); 

在$ xmlConfigurationFile是将文件
路径还存在具有权威性,CSRF,创建文件夹或文件路径没有问题

所以,问题是:
我怎样才能发送XML文件中的二进制通过curl在php7中?

在此先感谢

+0

你有没有想过使用PHP Jenkins的图书馆? [包装](https://packagist.org/search/?q=jenkins)上似乎有一些。 – StephenKing

回答

0

我已经解决了它
我不明白的逻辑,但它为我工作
我已经改变了这个

curl_setopt($curl, CURLOPT_POSTFIELDS, Array('file' => new CurlFile($xmlConfigurationFile))); 

其中$ xmlConfigurationFile是路径文件。对此

curl_setopt($curl, CURLOPT_POSTFIELDS, $xmlConfiguration); 

其中$ XMLConfiguration中是已经创建

文件
和工作的内容,如果有人交的解释,然而问题就解决了这将是很酷