使用PHP7和卷曲通过API
问题描述:
我试图使用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中?
在此先感谢
答
我已经解决了它
我不明白的逻辑,但它为我工作
我已经改变了这个
curl_setopt($curl, CURLOPT_POSTFIELDS, Array('file' => new CurlFile($xmlConfigurationFile)));
其中$ xmlConfigurationFile是路径文件。对此
curl_setopt($curl, CURLOPT_POSTFIELDS, $xmlConfiguration);
其中$ XMLConfiguration中是已经创建
文件
和工作的内容,如果有人交的解释,然而问题就解决了这将是很酷
你有没有想过使用PHP Jenkins的图书馆? [包装](https://packagist.org/search/?q=jenkins)上似乎有一些。 – StephenKing