2015-12-29 22 views
0

我正在從一個非瀏覽器設備(POS,銷售點)發出一個http發佈請求,在C中編程。如何從非瀏覽器設備進行HTTP POST?

完成一個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測試(一個優秀的應用程序鉻鉻應用程序商店測試的API),我收到正確的答覆。

我想我需要在POST標題中額外的東西,因爲作爲非瀏覽器設備,也許我沒有一些通信自動配置,我認爲,瀏覽器。有什麼想法?

+0

你不需要在字符串文字末尾放置'\ 0',C會自動完成。 – Barmar

回答

1

您需要將Content-Length標頭添加到您的請求中。