您好!
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:无法获取状态