This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C129ENCPDT:TIRTOS 中的 HTTP POST

Guru**** 656470 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1197612/tm4c129encpdt-http-post-in-tirtos

器件型号:TM4C129ENCPDT

您好!

HTTP 客户端获取 TIRTOS 2.16.00.08在我的电路板上工作的示例。

我还需要实施 HTTP 客户端 POST。

我修改了 HTTP GET 示例、如下所示、用于测试 HTTP POST。

 

空 httpTask (UARg arg0、UARg arg1)

bool MoreFlag = false;
字符数据[64];
内转台;
int len;
struct sockaddr_in addr;
char postdata ="hello";

HTTPCli_Field field[3]={
{ HTTPStd_field_name_host、HOSTNAME}、
{HTTPStd_field_name_user_agent、user_agent}、
{ NULL,NULL }
};

System_printf ("向'%s'发送 HTTP POST 请求\n"、HOSTNAME");
system_flush();

HTTPCLI_construct(&CLI);

HTTPCLI_setRequestFields(&CLI);

RET = HTTPCli_initSockAddr ((struct sockaddr *)&addr、HOSTNAME、0);
如果(ret < 0){
printError ("httpTask:地址解析失败"、ret);

RET = HTTPCLI_CONNECT (&CLI、(struct sockaddr *)&addr、0、NULL);
如果(ret < 0){
printError ("httpTask: connect failed"、ret);

RET = HTTPCLI_sendRequest (&CLI、HTTPStd_POST、Request_URI、false);
如果(ret < 0){
printError ("httpTask: POST init failed"、ret);


RET = HTTPCLI_sendField (&CLI、HTTPStd_field_name_content_type、"text/plain"、false);
如果(ret =0){
System_printf ("httpTask:发送字段完成\n"、ret);

RET=HTTPCLI_sendField (&CLI、HTTPStd_field_name_content_length、"5"、false);

RET = HTTPCLI_sendRequestBody (&CLI、"hello"、5);

//"{\"测试\":\"1\"}"

// System_printf ("{\" test\":\"1\"});//"{\" test\":\"1\"}"


如果(ret =0){
System_printf ("httpTask:发送正文完成\n"、ret);

RET = HTTPCLI_getResponseStatus (&CLI);
if (ret!= HTTPStd_OK){
printError ("httpTask:无法获取状态"、ret);

System_printf ("HTTP 响应状态代码:%d\n"、ret);

RET = HTTPCli_getResponseField (&CLI、data、sizeof (data)、&moreFlag);

if (ret!= HTTPCLI_FIELD_ID_END){
printError ("httpTask:Response field processing failed"、ret);

Len = 0;
执行{
RET = HTTPCli_readResponseBody (&CLI、data、sizeof (data)、&moreFlag);
如果(ret < 0){
printError ("httpTask:Response body processing failed"、ret);

len += ret;
} while (moreFlag);

system_printf ("接收到的有效载荷%d 字节\n"、len);
system_flush();

HTTPCLI_DISCONNECT (&CLI);
HTTPCL_析 构(&CLI);

但是 HTTP POST 不成功、我收到以下错误消息

00009.000 TcpTimeoutRexmt:重新发送超时
httpTask:发送字段完成
错误! 代码=-104、desc = httpTask:无法获取状态