PHP cURL POST Jenkins使用参数

通过以下PHP脚本触发Jenkins job

 <?php $testrun_id = "1744"; $cmd = "curl -X POST http://build:f9280f75396f83a0@mobile-jenkins.domain.com:8080/job/android-test/build --data-urlencode json='{\"parameter\": [{\"name\":\"POST_RESULTS\", \"value\":\"true\"}, {\"name\":\"RUN_ID\", \"value\":\"{$testrun_id}\"}, {\"name\":\"CHECK_NAME\", \"value\":\"SampleAutomatedPlan\"}]}'"; exec($cmd,$result); ?> 

这个脚本在Mac上成功运行,jenkins作业被触发。 如何使这个脚本在Windows上工作? 当我在Windows上运行PHP脚本时出现以下错误?

在这里输入图像说明

curl is already installed on windows machine 。 另外,有没有更好的方式来做cURL在PHP? 看这个: http : //php.net/manual/en/book.curl.php ,有人可以指向我在上面的PHP脚本 (对于Windows基于我的curl命令示例吗? 基于我的脚本中的curl命令的例子将是理想的。

Solutions Collecting From Web of "PHP cURL POST Jenkins使用参数"

你应该检查这里的例子http://php.net/manual/en/curl.examples.php

贝娄是你的代码案例,

 $url = "http://build:f9280f75396f83a0@mobile-jenkins.domain.com:8080/job/android-test/buildWithParameters"; $data = "POST_RESULTS=true&RUN_ID=".$testrun_id."&CHECK_NAME=SampleAutomatedPlan"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // $output contains the output string $output = curl_exec($ch); // close curl resource to free up system resources curl_close($ch); 

您需要为JSON设置内容类型

 curl -H "Content-Type: application/json" -X POST http://build:f9280f75396f83a0@mobile-jenkins.domain.com:8080/job/android-test/build --data-urlencode json='{\"parameter\": [{\"name\":\"POST_RESULTS\", \"value\":\"true\"}, {\"name\":\"RUN_ID\", \"value\":\"{$testrun_id}\"}, {\"name\":\"CHECK_NAME\", \"value\":\"SampleAutomatedPlan\"}]}'"; 

只要确保你没有任何混合匹配值。