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

时间:2015-06-03 14:53:02

标签: http microcontroller wireshark pic ethernet

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

我通过tcp / ip隧道成功发送了HTTP GET请求。 虽然当我尝试发送HTTP POST请求时,我要么得到一个" 400 Bad请求"或者我的apache服务器崩溃......

我认为这种行为是因为线端没有,"对"。

我的代码:

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输出(完成):

Wireshark ouput (complete)

看起来Lantronix Xport的0x0D(回车)导致在它之后发送0x00。这会导致网络服务器无法解释请求。

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

  • Lantronix XPORT在0x0D后发送0x00?
  • 我的HTTP POST请求以另一种方式出错了吗? (缺少内容长度?)

验证微控制器的输出:

Test 2

XPORT的设置与TERMINAL相同,并且应与MCU相同(否则它将无法接收):

Settings xport

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)

1 个答案:

答案 0 :(得分:1)

我终于找到了解决方案!

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

请在此处查看设置(可能希望在新标签中将其打开):

xport settings