如何从非浏览器设备进行HTTP POST?

时间:2015-12-29 15:50:51

标签: c json post http-headers ansi-c

我从非浏览器设备(POS,销售点)发出http发布请求,用C编程。

完成http GET请求,我从服务器收到答案。我只是连接主机,构建消息,例如:

strcpy(msjEnv, "GET /app/appinfo/ HTTP/1.1\r\n"
               "Host: 185.12.25.138\n"
               "User-Agent: 3C377521\n"
               "\n"
               "\0");    

我发送msjEnv,就像我说的那样,从服务器获得我需要的答案(JSON)。

现在,通过http POST请求,服务器无法接收构建消息的正文,例如:

strcpy(msjEnv, "POST /services/s/Core/login HTTP/1.1\r\n"
               "Host: 185.12.25.138:7004\r\n"
               "auth: asdasd\r\n"
               "Content-Type: application/x-www-form-urlencoded\r\n"
               "\r\n"
               "disp=101010&usr=987676&pass=123456&app=POS\0");

当我看到服务器的控制台(跟踪)时,我可以看到POS与服务器连接但是msg(disp=101010&usr=896464&pass=9514&app=WPOS)的BODY都是空的。

我已经使用Postman(一个优秀的应用程序从Chrome应用程序商店进行测试API测试)进行测试,我收到了正确的回复。

我认为我在POST标题中需要一些额外的东西,因为作为一个非浏览器设备,我可能没有一些自动配置用于通信,我认为这有,浏览器。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您需要在请求中添加Content-Length标头。

相关问题