Преобразование HTML-URL в модуль URI ANSIBLE - PullRequest
0 голосов
/ 27 мая 2019

Я хочу преобразовать URL-адрес html в модуль ansible uri, когда я загружаю его в браузер, он дает результаты, но из модуля uri я получаю ошибки

Мой URL: - https://rally1.rallydev.com/slm/webservice/v2.0/user?query=(FirstName = test1) & fetch = true

Ansible модуль URI: -

      uri:
        url: https://rally1.rallydev.com/slm/webservice/v2.0/user?query=(FirstName = "test1")&fetch=true
        user: myusername
        password: mypass
        force_basic_auth: yes
        follow_redirects: all
        return_content: yes
        method: GET
      register: get_data
    - debug: var=get_data

Я получаю эту ошибку: -

fatal: [localhost]: FAILED! => {"cache_control": "no-cache", "cf_ray": "4dd5a65fea0cba46-ATL", "changed": false, "connection": "close", "content": "<html><body><h1>400 Bad request</h1>\nYour browser sent an invalid request.\n</body></html>\n", "content_type": "text/html", "date": "Mon, 27 May 2019 05:39:42 GMT",

Пожалуйста, помогите

1 Ответ

0 голосов
/ 27 мая 2019

Я подозреваю, что проблема в том, что ваш URL содержит пробелы (), которые не являются допустимыми символами URL. Если я запускаю ваш код на примере веб-сервера, я вижу следующую ошибку после успешного согласования модулем uri соединения SSL:

Исключительная ситуация при выполнении задачи. Чтобы увидеть полную трассировку, используйте -vvv. Ошибка была: http.client.InvalidURL: URL не может содержать управляющие символы. «/ SLM / webservic e / v2.0 / user? query = (FirstName = "test1") & fetch = true '(найдено по крайней мере' ') роковой: [localhost]: не удалось! => {"updated": false, "content": "", "elapsed": 0, "msg": "Код состояния был -1, а не [200]: произошла неизвестная ошибка: URL не может содержать элемент управления персонажи. '/slm/webservice/v2.0/user?query=(FirstName = \ "test1 \") & fetch = true' (найдено как минимум '') "," redirected ": false," status ": -1," url ":" https://localhost:8080/slm/ webservice / v2.0 / user? query = (FirstName = \ "test1 \") & fetch = true "}

Пробелы в URL должны быть закодированы как + или как %20, чтобы вы могли написать свой URL следующим образом:

https://rally1.rallydev.com/slm/webservice/v2.0/user?query=(FirstName+=+"test1")&fetch=true

Или вот так:

https://rally1.rallydev.com/slm/webservice/v2.0/user?query=(FirstName%20=%20"test1")&fetch=true

Или, если запрос действителен без пробелов, просто напишите:

https://rally1.rallydev.com/slm/webservice/v2.0/user?query=(FirstName="test1")&fetch=true
...