zoukankan      html  css  js  c++  java
  • 使用jenkins传递字符参数,参数为url时报错--xxx 不是内部或外部命令,也不是可运行的程序(url中包含保留字符)

    错误:

    问题分析:

    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就不会报错了

     

    参考文档

    get请求中url参数值包含#特殊字符则需要做替换处理

    Python urlencode和unquote函数使用实例解析

  • 相关阅读:
    eclipse的快捷键【转载】
    eclipse调试断点【转载】
    eclipse打断点的调试
    Oracle存储过程的调试
    QT5线程关闭
    QT5 Thread线程
    QT5 文件读写操作
    QT5 Even 事件
    Qt 5 常用类及基本函数
    静态库lib、动态库dll基础
  • 原文地址:https://www.cnblogs.com/kaerxifa/p/12914893.html
Copyright © 2011-2022 走看看