Как отправить данные формы в POST-запросе в Ballerina? - PullRequest
0 голосов
/ 05 июля 2018

Я хочу отправить данные формы с запросом POST. Я попытался настроить заголовки и установить полезные нагрузки.

req.setPayload("text=you are amazing");
req.addHeader("content-type","application/x-www-form-urlencoded");

Получается как,

{message:"Entity body is not json compatible since the received content-type is : text/plain", cause:null}

Когда используется метод setStringPayload,

req.setStringPayload("text=you are amazing");
req.addHeader("content-type","application/x-www-form-urlencoded");

ошибка возникает следующим образом.

error: senuri/sms-sender:1.0.0/sms_sender.bal:72:5: undefined function 'setStringPayload' in struct 'ballerina/http:Request'

Я на Ubuntu 16.04 и Ballerina 0.975.0

Есть предложения?

1 Ответ

0 голосов
/ 06 июля 2018

Причина получения ошибки ниже - тип содержимого не переопределен должным образом.

{message: "Тело объекта не совместимо с json, так как получено Тип содержимого: текст / обычный ", причина: ноль}

setPayload метод выводит тип полезной нагрузки по параметру метода и устанавливает соответствующий параметр по умолчанию. В этом случае полезная нагрузка является строковым типом, поэтому тип содержимого устанавливается как text / plain. addHeader метод не заменяет существующие значения заголовка, он просто добавляет другую запись для конкретного существующего имени заголовка.

Поскольку приоритет отдается первому типу содержимого, тип все еще text / plain. Решение состоит в том, чтобы использовать setHeader , который заменяет существующее значение заголовка.

req.setPayload("text=you are amazing");
req.setHeader("Content-type","application/x-www-form-urlencoded");

Что касается второго запроса, setStringPaylaod переименовывается в setTextPaylaod . Таким образом, используя следующий код, данные формы могут быть отправлены. Переопределение типа контента важно, так как тип контента по умолчанию для установки полезной нагрузки через setTextPaylaod - text / plain.

req.setTextPayload("text=you are amazing");
req.setHeader("Content-type","application/x-www-form-urlencoded");

getFormParams * Метод 1024 * может использоваться для извлечения параметров в виде карты.

...