Облачные функции Google не возвращают ответ

Я использую этот API в облачных функциях Google https://ocr.space/ocrapi Это функция, которую я развернул

def ocr_space_url(request):
    request_json = request.get_json()
    request_args = request.args


    if request_json and 'url' in request_json:
        url = request_json['url']

    elif request_args and 'url' in request_args: 
        url = request_args['url']
    else:
        url = 'http://www.africau.edu/images/default/sample.pdf'

    headers = {
        'apikey': 'helloworld',
    }
     payload = {'url': url,
               }
    r = requests.post('https://api.ocr.space/parse/image',
                      headers=headers, data=payload,
                      )

    return r.content.decode()


Разворачивается так:
gcloud functions deploy ocr_space_url --runtime python37 --trigger-http

Позвонив:
curl -X POST "https://us-central1-prefab-environs-241910.cloudfunctions.net/ocr_space_url" -H "Content-Type:application/json" -d "{"url": "http://dl.a9t9.com/ocrbenchmark/pdfscan.pdf"}"

когда я вызываю его с типом контента, он выдает ошибку ниже

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>


если я вызываю его без типа контента, он переходит в else, потому что я получаю request_json = None и для URL в else он дает мне правильный результат

Я впервые в жизни использую облачные функции, пожалуйста, помогите

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
2 148
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте запрос в качестве параметра, анализируйте данные POST как json (или как хотите)

#def ocr_space_url(url, overlay=False, api_key='helloworld', language='eng'):
def ocr_space_url(request):
    """ OCR.space API request with remote file.
        Python3.5 - not tested on 2.7
    :param url: Image url.
    :param overlay: Is OCR.space overlay required in your response.
                    Defaults to False.
    :param api_key: OCR.space API key.
                    Defaults to 'helloworld'.
    :param language: Language code to be used in OCR.
                    List of available language codes can be found on https://ocr.space/OCRAPI
                    Defaults to 'en'.
    :return: Result in JSON format.
    """

    request_json = request.get_json()
    if request_json and 'url' in request_json:
        url = request_json['url']
    else:
        url = 'http://www.africau.edu/images/defaultsample.pdf'

    payload = {'url': url,
               'isOverlayRequired': False,
               'apikey': 'helloworld',
               'language': 'eng',

               }
    r = requests.post('https://api.ocr.space/parse/image',
                      data=payload,
                      )
    return r.content.decode()

Сделайте запрос с --data '{"url": "http://www.africau.edu/images/defaultsample.pdf"}' -H "Content-Type: application/json"

теперь я получаю эту ошибку Error: could not handle the request

irum zahra 28.05.2019 12:01

Вы поставили requests в файле requirements.txt?

Cloud Ace Wenyuan Jiang 28.05.2019 12:29

эта проблема решена. новая проблема TypeError: 'Request' object is not iterable

irum zahra 28.05.2019 12:40

Я не получаю ничего в request_json = request.get_json()

irum zahra 29.05.2019 01:26

@irumzahra использует ' вместо ": -d '{"url": "http://dl.a9t9.com/ocrbenchmark/pdfscan.pdf"}'

Cloud Ace Wenyuan Jiang 29.05.2019 01:44

Другие вопросы по теме