Ansible win_uri module doesn't return content for POST query

Viewed 939

I try to get some data from the page after the POST query. I'm using ansible 2.9.10. But the win_uri module in it doesn't return the content of the response. But Invoke-WebRequest working on the same host.

  win_uri:
    method: POST
    url: "{{ configuraton_url }}"
    body: "{'action': 'listconfig'}"
    validate_certs: no
    use_default_credential: yes
    return_content: yes
  register: configuration

result

  configuration:
    cache_control: private
    changed: false
    character_set: null
    content: ''
    content_encoding: ''
    content_length: '0'
    content_type: ''
    cookies: []
    date: Mon, 29 Jun 2020 20:17:29 GMT
    elapsed: 0.1875025
    failed: false
    headers:
    - Persistent-Auth
    - Content-Length
    - Cache-Control
    - Date
    - Server
    - WWW-Authenticate
    - X-AspNet-Version
    - X-Powered-By
    is_from_cache: false
    is_mutually_authenticated: true
    last_modified: '2020-06-29T20:17:29.5951209+00:00'
    method: POST
    msg: OK
    persistent_auth: 'true'
    protocol_version:
      Build: -1
      Major: 1
      MajorRevision: -1
      Minor: 1
      MinorRevision: -1
      Revision: -1
    response_uri: https://xxxxxxx:xxx/xxxxxxxx
    server: xxxxxxx
    status_code: 200
    status_description: OK
    supports_headers: true
    url: https://xxxxxxx:xxx/xxxxxxxx
    www_authenticate: Negotiate oRswGaADCgEAoxIEEAEAAAAyRzN6JblgagAAAAA=
    x_asp_net_version: xxxxx
    x_powered_by: xxxxx
2 Answers
content_length: '0'

It's doing exactly as the server instructed, there is no content returned

No one on Stack Overlow will be able to tell you why your obfuscated server did not return any content, but ansible is doing as it was instructed


As a guess, I would guess you are sending a malformed payload, both that body: should have the quotes reversed (since the single-quote version is legal python, but not legal JSON) and you are missing the content_type: application/json in order to tell win_uri: not to use x-www-form-urlencoded. We can't know for sure that's what's happening because you removed the rest of the module output

  win_uri:
    method: POST
    url: "{{ configuraton_url }}"
    body: '{"action": "listconfig"}'
    content_type: application/json
Related