Lantronix XPORT - TCP/IP 隧道发送 HTTP POST 请求

Lantronix XPORT - TCP/IP tunnel to send HTTP POST requests

我有一个 XPORT(TCP/IP 串行隧道设备)连接到我的微控制器 (PIC18),这样我就可以发送串行消息,这些消息被转换成 TCP/IP 包。我启用了 TCP/IP 打包,这样所有字符都会被放在一个 TCP/IP 包中,直到在短时间内没有收到任何东西。

我已经通过 tcp/ip 隧道成功发送了一个 HTTP GET 请求。 虽然当我尝试发送 HTTP POST 请求时,我要么收到“400 错误请求”,要么我的 Apache 服务器崩溃了...

我认为这种行为是因为没有行结束,"right"。

我的代码:

Delay1KTCYx(160);
xportSendTextNoLine("C192.168.200.18/80\n");//Manual connect to server (xport command)

Delay1KTCYx(160);//Wait for TCP/IP packaging.
xportSendTextNoLine("POST /debug.php HTTP/1.1");
xportSend(0x0D);//Carriage return.
xportSend(0x0A);//New line

xportSendTextNoLine("Host: 192.168.200.18");
xportSend(0x0D);//Carriage return.
xportSend(0x0A);//New line

xportSendTextNoLine("Content-Type: application/x-www-form-urlencoded");
xportSend(0x0D);//Carriage return.
xportSend(0x0A);//New line
xportSend(0x0D);//Carriage return.
xportSend(0x0A);//New line

xportSendTextNoLine("Grower=2&SiteId=99&Time=2015021108291700&Usertag=testuser&Action=0");
xportSend(0x0D);//Carriage return.
xportSend(0x0A);//New line
xportSend(0x0D);//Carriage return.
xportSend(0x0A);//New line
Delay1KTCYx(160);//Wait for TCP/IP packaging.

Wireshark 输出(简化):

>POST /debug.php HTTP/1.1[0x0D][0x00][0x0A]
      Host: 192.168.200.18[0x0D][0x00][0x0A]
      etc.

<HTTP/1.1 400 Bad Request

Wireshark 输出(完整):

Lantronix Xport 的 0x0D(回车 Return)似乎导致在其后发送 0x00。这将导致网络服务器无法解释请求。

我刚刚向 Lantronix 支持发送了一个技术支持问题,但我也想知道 是否有人可以告诉我是否:

验证微控制器的输出:

XPORT的设置与TERMINAL相同,应与MCU相同(否则接收不一样):

MCU串口设置:

    RCSTA2bits.SPEN   = 1;   //Serial port enable
    TRISGbits.TRISG2  = 1;   //RG2 input (RX)
    TRISGbits.TRISG1  = 0;   //RG1 output (TX)
    ANCON2bits.ANSEL18= 0;   //DIGITAL!
    ANCON2bits.ANSEL19= 0;

    IPR3bits.RC2IP = 1;//High-priority  Rx interrupts
    PIE3bits.RC2IE = 1;//Enable         Rx interrupt

    TXSTA2 = 0b00100000;
    RCSTA2 = 0b10010000;
    BAUDCON2 = 0b01000000;//Receive operation active.

    SPBRG2  = 12;   // 9615 (0.16% error) (8Mhz)

我终于找到解决办法了!

经过一些(逻辑上的)思考,我发现这将是 XPORT 的问题。 但可能是什么问题?我禁用了我认为可能会干扰的所有功能(尽管我认为这会导致这种错误是不合逻辑的)并且保存后,POST 请求在我的服务器中很好地弹出...

在此处查看设置(可能需要在新标签页中打开它):