Как исправить ошибку неверного URL при использовании http.client? - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь поразить API, используя http.client из pyhton3, чтобы смоделировать, как я могу сделать то же самое в веб-браузере. Однако http.client считает, что URL неуместен.

Это то, что я пытаюсь сделать.

import http.client

connection = http.client.HTTPSConnection("https://analyticsapi.zoho.com/api/EmailAddress/WorkspaceName/TableName?ZOHO_ACTION=IMPORT&ZOHO_OUTPUT_FORMAT=XML&ZOHO_ERROR_FORMAT=XML&ZOHO_API_VERSION=1.0&authtoken=************&ZOHO_IMPORT_TYPE=APPEND&ZOHO_AUTO_IDENTIFY=TRUE&ZOHO_ON_IMPORT_ERROR=ABORT&ZOHO_CREATE_TABLE=TRUE&ZOHO_FILE=/home/dev1/Desktop/Zoho/temporary.csv")
connection.request("GET", "/")
response = connection.getresponse()
print("Status: {} and reason: {}".format(response.status, response.reason))

connection.close()

И это ошибка, которую я получаю.

$ python3 pyToTestPushingCSV.py 
Traceback (most recent call last):
  File "/usr/lib/python3.5/http/client.py", line 798, in _get_hostport
    port = int(host[i+1:])
ValueError: invalid literal for int() with base 10: '//analyticsapi.zoho.com/api/usename/ATable/InsideTable?ZOHO_ACTION=IMPORT&ZOHO_OUTPUT_FORMAT=XML&ZOHO_ERROR_FORMAT=XML&ZOHO_API_VERSION=1.0&authtoken=****

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "pyToTestPushingCSV.py", line 3, in <module>
    connection = http.client.HTTPSConnection("https://analyticsapi.zoho.com/api/usename/ATable/InsideTable?ZOHO_ACTION=IMPORT&ZOHO_OUTPUT_FORMAT=XML&ZOHO_ERROR_FORMAT=XML&ZOHO_API_VERSION=1.0&authtoken=****************&ZOHO_IMPORT_TYPE=APPEND&ZOHO_AUTO_IDENTIFY=TRUE&ZOHO_ON_IMPORT_ERROR=ABORT&ZOHO_CREATE_TABLE=TRUE&ZOHO_FILE=/home/dev1/Desktop/Zoho/temporary.csv")
  File "/usr/lib/python3.5/http/client.py", line 1233, in __init__
    source_address)
  File "/usr/lib/python3.5/http/client.py", line 762, in __init__
    (self.host, self.port) = self._get_hostport(host, port)
  File "/usr/lib/python3.5/http/client.py", line 803, in _get_hostport
    raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
http.client.InvalidURL: nonnumeric port: '//analyticsapi.zoho.com/api/usename/ATable/InsideTable?ZOHO_ACTION=IMPORT&ZOHO_OUTPUT_FORMAT=XML&ZOHO_ERROR_FORMAT=XML&ZOHO_API_VERSION=1.0&authtoken=*************&ZOHO_IMPORT_TYPE=APPEND&ZOHO_AUTO_IDENTIFY=TRUE&ZOHO_ON_IMPORT_ERROR=ABORT&ZOHO_CREATE_TABLE=TRUE&ZOHO_FILE=/home/dev1/Desktop/Zoho/temporary.csv'

Когда я нажимаю URL-адрес в браузере, он дает хороший ответ обратно в XML, что, в общем, успешно. Это где я сослался на документацию Можете ли вы указать, где я ошибся?

1 Ответ

1 голос
/ 18 апреля 2019

Согласно документации Поддержка HTTPS доступна только в том случае, если Python был скомпилирован с поддержкой SSL (через модуль ssl).

Также порт по умолчанию для соединения https - 443. Модуль кажетсяпоразить этот порт по умолчанию.

...