2015-10-01 2 views
1

Я пытаюсь отправить SOAP-запрос xml для покрытия веб-api с помощью python/urllib2 (я не могу установить новые модули python, поэтому мои параметры ограничены urllib2).Как отправить запрос на обложку web api с помощью urllib2?

Ниже мой код:

def getDateTime(): 
    t = datetime.now() 
    return t.strftime('%Y-%m-%dT%H:%M:%S.%fZ') 

def coverityRequest(): 
    dateAndTime = getDateTime() 
    username = 'usernamestr' 
    password = 'passstr' 
    d = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v7="http://ws.coverity.com/v7"> \ 
    <soapenv:Header><wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:UsernameToken><wsse:Username>' + username +'</wsse:Username><wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">' + password + '</wsse:Password><wsu:Created>' + dateAndTime + '</wsu:Created></wsse:UsernameToken></wsse:Security></soapenv:Header> \ 
    <soapenv:Body> \ 
     <v7:getSnapshotsForStream> \ 
     <streamId> \ 
      <name> abc.1.1_ab123 </name> \ 
     </streamId> \ 
     <filterSpec> \ 
     </filterSpec> \ 
     </v7:getSnapshotsForStream> \ 
    </soapenv:Body> \ 
    </soapenv:Envelope>' 

    r = urllib2.Request(url="http://x.x.x.x:8080/ws/v7/configurationservice?wsdl", data=d, headers={'Content-Type': 'text/xml'}) 
    u = urllib2.urlopen(r) 
    response = u.read() 
    return response 

Однако я получаю ниже результат:

Traceback (most recent call last): 
    File "./gen_release_ticket_info.py", line 49, in <module> 
    output = coverityRequest() 
    File "./gen_release_ticket_info.py", line 44, in coverityRequest 
    u = urllib2.urlopen(r) 
    File "/usr/lib64/python2.6/urllib2.py", line 126, in urlopen 
    return _opener.open(url, data, timeout) 
    File "/usr/lib64/python2.6/urllib2.py", line 397, in open 
    response = meth(req, response) 
    File "/usr/lib64/python2.6/urllib2.py", line 510, in http_response 
    'http', request, response, code, msg, hdrs) 
    File "/usr/lib64/python2.6/urllib2.py", line 435, in error 
    return self._call_chain(*args) 
    File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain 
    result = func(*args) 
    File "/usr/lib64/python2.6/urllib2.py", line 518, in http_error_default 
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 407: Proxy Authorization Required 

я пинг-Е.Д. сервера и достижима. Есть идеи?

+1

Push 'Allow-Origin' header @ maduranga-e – dsgdfg

ответ

1

Этот код ошибки указывает, что он ищет базовую или дайджест-аутентификацию. urllib2 имеет интерфейс аутентификации. PS Имя пользователя и пароль неправильно закодированы в d. Будут проблемы, если в них есть специальные символы, такие как <.

Смежные вопросы