2014-02-12 46 views
0

我試圖引發一些建立使用shell腳本執行以下操作:在Python執行網址類似於Linux的捲曲 - JenkinsAPI

export url='http://test.com'; 
export job_name='MY_JOB_NAME'; 

jso="{\"parameter\": [{\"name\":\"BRANCH\",\"value\":\"master\"}, {\"name\":\"GITURL\",\"value\":\"https://github.test.com/test/test.git\"}]}"; 

curl $url/job/$job_name/build --data-urlencode json="$jso"; 

這工作得很好,但是當我嘗試將其轉換爲一個蟒蛇等同,它似乎並沒有觸發的網址:

import requests 
import json 

url='http://test.com/job/MY_JOB_NAME/build' 

params={'name':'release_1.5', 'GITURL':'https://github.test.com/test/test.git'} 
payload = json.dumps(params) 
resp = requests.get(url=url, data=payload) 

這執行沒有任何錯誤,但它不會觸發我的CI機器上的版本。

回答

1

這裏有很多事情你做錯了。我希望看到的第一件事是你發送的JSON數據是完全不同的。

除此之外,您在此處遇到的主要問題是您的curl正在使用BODY中的urlencoded數據執行POST,並且您的python請求正在使用urlencoded數據進行GET,並將其作爲url中的單獨參數。將.get改爲.post,params = to data =,你應該更接近你的預期目標。

resp = requests.post(url=url, data={'json':payload}) 

另外請注意,我將你的有效載荷嵌入到一個鍵爲json,因爲這是你的捲曲中發生的事情。我並沒有完全意識到您的實施細節,但我希望這有助於您走上正確的軌道。

-1

內容類型添加到所述請求的首部,即:

headers = {'content-type': 'application/json'} 
... 
resp = requests.get(url=url, params=payload, headers=headers)