2015-06-03 65 views
0

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

我已成功通过tcp/ip隧道发送HTTP GET请求。 虽然当我尝试发送一个HTTP POST请求,我要么得到一个“400错误的请求”或我的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在它之后被发送。这将导致Web服务器无法解释请求。

我刚刚发送的技术支持问题Lantronix的支持,但我也想知道,如果谁能告诉我,如果:

  • Lantronix的XPORT一个0X0D后发送为0x00 ?
  • 我的HTTP POST请求在另一种方式是错误的? (缺少内容长度?)

验证微控制器的输出:所述XPORT的

Test 2

设置是相同的端子和应该是相同的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) 
+0

请问这个问题得到更好的问电气工程堆栈交流? - 我在这里发布它的原因是因为它涉及到网络/ wireshark/http-post,这会更适合在这里? – Paul

回答

1

我终于找到了解决方案!

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

看到这里设置(可能要在新标签中打开它):

xport settings