錯誤:
問題分析:
1.當直接把1個url當作一個字符串傳遞時,url中的保留符號(&)會導致程序出錯
2.在url中特殊符號都有特殊意義或者被認為是不安全的字符,所以在拼接url時應當做替換處理。
RFC3986文檔規定,Url中只允許包含以下四種:
1、英文字母(a-zA-Z)
2、數字(0-9)
3、-_.~ 4個特殊字符
4、所有保留字符,RFC3986中指定了以下字符為保留字符(英文字符): ! * ' ( ) ; : @ & = + $ , / ? # [ ]
Url編碼通常也被稱為百分號編碼(Url Encoding,also known as percent-encoding),是因為它的編碼方式非常簡單,使用%百分號加上兩位的字符。Url編碼默認使用的字符集是US-ASCII。例如a在US-ASCII碼中對應的字節是0x61,那么Url編碼之后得到的就是%61。同理,參看如下圖ASCII表,#應該被替換處理為%23
解決辦法:
把要通過jenkins傳遞的url先進行url-encode編碼,在具體使用到該參數的時候,再進行urldecode解碼
#導入依賴包
import urllib.parse #要通過jenkins傳遞的url
url ='http://jira.xxxxx.com/secure/RapidBoard.jspa?rapidView=187&projectKey=OFFICIAL&selectedIssue=OFFICIAL-5837'
先編碼
#urlencode編碼
data = urllib.parse.quote(url)
輸出結果:
'http%3A//jira.XXXX.com/secure/RapidBoard.jspa%3FrapidView%3D187%26projectKey%3DOFFICIAL%26selectedIssue%3DOFFICIAL-5837'
解碼
finall_url=urllib.parse.unquote(data)
輸出結果:
和未編碼之前一樣就對了
'http://jira.XXX.com/secure/RapidBoard.jspa?rapidView=187&projectKey=OFFICIAL&selectedIssue=OFFICIAL-5837'
再試試用jenkins傳遞 編碼后的url就不會報錯了
參考文檔