ブラウザ以外のデバイス (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 がサーバーに接続していることがわかりますが、メッセージ ( disp=101010&usr=896464&pass=9514&app=WPOS
) の BODY はすべて null です。
Postman (Chrome アプリ ストアから API をテストするための優れたアプリ) でテストを行ったところ、正しい応答が返されました。
私は POST ヘッダーに何か余分なものが必要だと考えています。なぜなら、ブラウザー以外のデバイスとして、おそらくブラウザーのように通信のための自動構成を持っていないからです。アイデアはありますか?