利用httplib.HTTPSConnection 发送post请求的方式

时间:2022-09-12 19:15:37

原文出处:http://blog.chinaunix.net/uid-429659-id-3988033.html

利用httplib 以http发送post请求网上很多资料。https的处理方式,有所不同,弄不好,报480等错误。

正确的处理方式,上代码:

  1. #HTTPS发送POST请求范例
  2. import httplib
  3. import ssl
  4. import socket
  5. import base64
  6. import simplejson
  7. try:
  8.     receipt = '{"data":1111}'
  9.     encodedReceipt = base64.b64encode(receipt)
  10.     param= simplejson.dumps({"receipt-data":encodedReceipt})
  11.     API_url = "xx.xxx.com"
     
  1.     #关键代码开始
  2.     httpClient = httplib.HTTPSConnection(API_url)
  3.     sock = socket.create_connection((httpClient.host, httpClient.port))
  4.     httpClient.sock = ssl.wrap_socket(sock, httpClient.key_file, httpClient.cert_file, ssl_version=ssl.PROTOCOL_TLSv1)
  5.     httpClient.request('POST', "/verifyReceipt/", param)
  6.     returnData = httpClient.getresponse().read()
  7.     data = simplejson.loads(returnData)
  8. except Exception, e:
  9.     print e
  10. finally:
  11.     if httpClient:
  12.         httpClient.close()

附代码:

  1. import httplib, ssl, socket

  2. conn = httplib.HTTPSConnection(URL.hostname)
  3. sock = socket.create_connection((conn.host, conn.port), conn.timeout, conn.source_address)
  4. conn.sock = ssl.wrap_socket(sock, conn.key_file, conn.cert_file, ssl_version=ssl.PROTOCOL_TLSv1)
  5. conn.request('POST', URL.path + URL.query)