Отправить данные через Http на сервер и показать ответ в Webview - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть сервер Odoo, который является веб-приложением с функциональностью веб-сайта.Мне нужно реализовать приложение для Android / iOS, которое поддерживает функциональность этого веб-сайта.

Функциональность веб-сайта проста:

  1. Возьмите код вмешательства.
  2. проверьте,состояние листа вмешательства отображается на веб-сайте.
  3. если да, отредактируйте лист вмешательства, если сообщение об ошибке не отображается.

Итак, я хочу взять номер вмешательства из Android(например) и отправьте его по HTTP-запросу, и если я получу ответ «да», продолжите редактирование и другие действия в веб-представлении .... если я получу «ошибку», отобразите ошибку в Android Activity.

Thisмой контроллер на сервере, который проверяет код:

@http.route(['/checkCodeAction'],
                type='http',
                auth="public",
                methods=['POST', 'GET'],
                csrf=True,
                website=True)
    def worksheet_code_details(self, **post):
        worksheet = request.env['project.task.worksheet']\
            .sudo()\
            .search([('intervention_number',
                     '=',
                     post.get('intervention_number'))])

        if worksheet and worksheet.state_id.is_visible_on_frontend:
            return redirect(f'/worksheetReadValues/{worksheet.id}')

        return request.render(
            "website_project_task_worksheet.worksheet_code",
            {'error_code': True}
        ) 

The request.render загружает XML-шаблон Odoo .... Я могу перехватить этот вызов в веб-просмотре?Или мне нужно реализовать другой контроллер для Android, который получает, например, два ответа (error, url_with_worksheetid) ... поэтому, если я получаю сообщение об ошибке, я показываю сообщение, если получаю URL-адрес, я вызываю веб-просмотр с этим URL.

1 Ответ

0 голосов
/ 21 сентября 2018

Я думаю, что лучше возвращать ошибку, используя код состояния ошибки HTTP, и вы сможете лучше перехватить этот код ошибки в вашем контроллере Android или IOS.

В Odoo вы можете вернуть необработанный werkzeugответ, подобный этому (следующий пример из существующей интеграции Android-IOS-Odoo, сделанной мной):

return werkzeug.wrappers.Response(body, status=403, headers=[
    ('Content-Type', 'application/json'), ('Content-Length', len(body))
])

или вы можете добавить аргумент состояния к уже возвращенному вызову рендеринга, что это уже ленивый ответ рендерингаобертка, как:

return request.render(
    "website_project_task_worksheet.worksheet_code",
    {'error_code': True}, status=403
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...