スーパーシンプルなJSON-RPCサーバーを構築しようとしていますが、POSTメッセージの本文を受信できません。引数がホストヘッダーに含まれているので、GETメッセージを正常に受信できます。しかし、私はPOSTまたはPUTのいずれかの本体を受け取ることはできません。私は実際に適切なPOSTメッセージを送信していることを確認するために、PostmanとcUrlという2つの異なるバージョンを使用しました。ソケットでHTTP本体を受信していません
私のコードはかなりシンプルです。私はソケットを作成し、それにバインドして、受け取ったものを聞いて保存します。 (PはProgramクラスへの参照です)
p.sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
p.sock.Bind(new IPEndPoint(IPAddress.Any, p.config.server_port));
p.sock.Listen(5);
p.serverThread = new Thread(new ThreadStart(() => serverListen(p)));
p.serverThread.Start();
、その後、私は実際にメッセージを受信するために、次のブロックを使用します。
Socket recieved = p.sock.Accept();
//handle recieved info
string message = "";
byte[] buffer = new byte[10000];
int readResult = recieved.Receive(buffer);
if (readResult > 0) {
message = Encoding.UTF8.GetString(buffer,0, readResult);
message = message;//for debugging purposes
message = ReceivedMessage.decodeURL(message);//Get rid of URL encoding
}
これはGETメッセージの素晴らしい作品が、体を返すことに失敗しましたPOSTメッセージ用。上記のコードは、次のHTTPメッセージを取得します。
POST/HTTP/1.1
cache-control: no-cache
Postman-Token: 5dab0e8e-910f-4c5d-a7dd-49bf5348a8d0
Content-Type: text/plain
User-Agent: PostmanRuntime/3.0.5
Accept: */*
Host: localhost:1215
accept-encoding: gzip, deflate
content-length: 18
Connection: keep-alive
ボディー要素はまったく含まれていません。私は何が欠けていますか?どんな助けでも大歓迎です。