尊敬的 TI:
我无法与服务器连接、提供的示例 HttpGet 在 Get 方法中运行良好、而我尝试通过 POST 方法连接它时、它会引发以下错误。
这是我的 httptask...
void* httpTask(void *pvParameters)
{
bool moreDataFlag = false;
char data[HTTP_MIN_RECV];
int16_t ret = 0;
int16_t len = 0;
Display_printf(display, 0, 0, "Sending a HTTP GET request to '%s'\n",
HOSTNAME);
HTTPClient_Handle httpClientHandle;
int16_t statusCode;
httpClientHandle = HTTPClient_create(&statusCode, 0);
if (statusCode < 0)
{
printError("httpTask: creation of http client handle failed",
statusCode);
}
ret = HTTPClient_setHeader(httpClientHandle,
HTTPClient_HFIELD_REQ_AUTHORIZATION,
USER_AGENT, strlen(USER_AGENT) + 1,
HTTPClient_HFIELD_PERSISTENT);
if (ret < 0)
{
printError("httpTask: setting request header failed", ret);
}
ret = HTTPClient_connect(httpClientHandle, HOSTNAME, 0, 0);
if (ret < 0)
{
printError("httpTask: connect failed", ret);
}
// ret = HTTPClient_sendRequest(httpClientHandle, HTTP_METHOD_POST,
// REQUEST_URI,
// NULL,
// 0, 0);
ret = HTTPClient_sendRequest(httpClientHandle, HTTP_METHOD_POST,
REQUEST_URI,
REQ_BODY,
strlen(REQ_BODY), 0);
if (ret < 0)
{
printError("httpTask: send failed", ret);
}
if (ret != HTTP_SC_OK)
{
printError("httpTask: cannot get status", ret);
}
Display_printf(display, 0, 0, "HTTP Response Status Code: %d\n", ret);
len = 0;
do
{
ret = HTTPClient_readResponseBody(httpClientHandle, data, sizeof(data),
&moreDataFlag);
if (ret < 0)
{
printError("httpTask: response body processing failed", ret);
}
Display_printf(display, 0, 0, "%.*s \r\n", ret, data);
len += ret;
}
while (moreDataFlag);
Display_printf(display, 0, 0, "Received %d bytes of payload\n", len);
ret = HTTPClient_disconnect(httpClientHandle);
if (ret < 0)
{
printError("httpTask: disconnect failed", ret);
}
HTTPClient_destroy(httpClientHandle);
return (0);
}
相关的宏
#define HOSTNAME ""www.example.com"">jxxxxxxxx.jxx.com"/.../www.example.com" #define REQUEST_URI "/jxx/bootstrap/api/v1/device/auth" // "/" #define USER_AGENT "HTTPClient (ARM; TI-RTOS)" #define HTTP_MIN_RECV (256) const char *REQ_BODY = "{\"deviceKey\":\"p0RbSjlkw+EiqaGIXrQ1\",\"cn\":\"jxxxxxxxx.jxx.com\",\"svc\":\"svc330000469\"}";
实际上,我们正在尝试连接自举 Sever,每当我们的 MCU 通电时,它就需要使用 POST 方法向服务器发送请求,因为 device_id 将以 json 的形式发送到服务器。 关于 IT 服务器、我们将发送其他详细信息、我们将在后续操作中使用这些信息。
这次连接是我遇到的主要问题、是第一次尝试使用 POST 方法进行连接(Get 方法运行良好)。 请帮助我解决此问题。
提前感谢、
sarju