Как подключиться к локальному python flask API с помощью Python - PullRequest
0 голосов
/ 09 марта 2020

У меня работает локальный python flask API, работающий на основе. Он работает под базовым URL-адресом:

http://localhost:80/

 * Serving Flask app "main" (lazy loading)
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://localhost:80/ (Press CTRL+C to quit)

Вот код для него:

if __name__ == '__main__':
    import os

    HOST = os.environ.get('SERVER_HOST', 'localhost')
    try:
        PORT = int(os.environ.get('SERVER_PORT', '5555'))
    except ValueError:
        PORT = 5555
    app.run(HOST, 80)

Мне нужно подключиться к API, для которого полный URL-адрес:

http://localhost:80/api/v1/face/recognize

Я могу подключиться к нему с помощью почтальона и получить хороший ответ. Я должен подключиться к нему с помощью другого python проекта. Для этого я использую следующий код:

import http.client
import json

headers = {'appName': 'Tirunka', 'app_key': '6e0e36ff19de5623',
                           'Content-Type': 'application/json'}
data = {
    "imageUrl": "kf7ZrqtJ5Sucu02eL7kerZrOG7Or ........ and so on ..........Haypep1uir/AKRH9K662T92K5TRh/",
    "galleryName": 'test'
}

json_data = json.dumps(data)

conn = http.client.HTTPSConnection('http://localhost:80')
conn.request("POST", "/api/v1/face/recognize", json_data, headers)

В этой строке conn = http.client.HTTPSConnection('http://localhost:80/') я получаю исключение ниже:

nonnumeric port: '80/'

Я, кажется, использовал правильный URL. Я не могу понять ошибку. Может кто-нибудь, пожалуйста, помогите. Спасибо

1 Ответ

1 голос
/ 09 марта 2020

Из документации (выделено мое):

Экземпляр HTTPConnection представляет одну транзакцию с сервером HTTP. Следует создать экземпляр, передав ему хост и необязательный номер порта. Если номер порта не передан, порт извлекается из строки хоста, если он имеет форму host: port , иначе используется HTTP-порт по умолчанию (80).

Ваш Строка не соответствует формату host:port. Удалите завершающий sla sh или укажите порт с ключевым аргументом:

conn = http.client.HTTPSConnection('http://localhost:80/') # does not work (InvalidURL: nonnumeric port: '80/')
conn = http.client.HTTPSConnection('http://localhost:80') # works
conn = http.client.HTTPSConnection('http://localhost',port=80) # works
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...