Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 http.client.HTTPSConnection and user authentication?
#1
We have a self-signed site I can use curl to retrieve the data using the REST API:

curl https://user:passwd@somedomain.com/rest/api/something

But I don't know how to do the same using http.client.HTTPSConnection(). I did some google search but didn't see a good way.

import http.client
import ssl
import urllib.parse

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_REQUIRED
context.load_verify_locations('mywonca.crt')
conn = http.client.HTTPSConnection('username:passwd@somedomain.com', 443, context=context)
conn.request("GET","/rest/api/something")
r1 = conn.getresponse()
It complains the socket gaierror. I know I probably should not put the username:passws in the host part, but I don't know where I can set it.
Quote
#2
I sorted it out myself. If someone is looking for the answer, here is the code:

import http.client
import ssl
import ubase64

user="USERNAME"
passwd="PASSWORD"

headers = {"Authorization":"Basic {}".format(base64.b64encode(bytes(f"{user}:{passwd}","utf-8")).decode("ascii"))}
 
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
context.verify_mode = ssl.CERT_REQUIRED
context.load_verify_locations('mywonca.crt')
conn = http.client.HTTPSConnection('somedomain.com', 443, context=context)
conn.request("GET","/rest/api/something",headers=headers)
r1 = conn.getresponse()


Quote

Top Page

Forum Jump:


Users browsing this thread: 1 Guest(s)