0

ブラウザ以外のデバイス (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 ヘッダーに何か余分なものが必要だと考えています。なぜなら、ブラウザー以外のデバイスとして、おそらくブラウザーのように通信のための自動構成を持っていないからです。アイデアはありますか?

4

1 に答える 1

1

リクエストに Content-Length ヘッダーを追加する必要があります。

于 2015-12-29T16:00:57.433 に答える