2014-04-16 34 views
0

我試圖通過改進向遠程Django服務器發送POST請求。我已經創建了一個日誌中RestAdapter用於改造,但是當我監控日誌,我注意到該請求被正確發送作爲POST:傳出POST請求的改進日誌與傳入的數據包不匹配

---> HTTP POST http://[omitted IP]/users/login_user/?username=Lucas&platform=AND&client_version=1.0 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Content-Length: 18 

password=abcd12345 
---> END HTTP (18-byte body) 

,但它是在服務器上接收到的(根據tcpdump的),其爲GET請求。

我可以使用捲曲基本上發送相同的請求:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -d 'password=abcd12345' "http://[omitted IP]:22800/users/login_user/?username=Lucas&platform=AND&client_version=1.0" 

,並且這導致在POST請求中由服務器,它正確地處理所接收。

下面是從tcpdump的通過捲曲的POST包:

05:54:25.849761 IP [omitted IP].dsl.teksavvy.com.53549 > 192.168.0.150.22080: Flags [P.], seq 1:251, ack 1, win 229, options [nop,nop,TS val 9311380 ecr 191199659], length 250 
E...;[email protected]@a./.........f9..... 
.....ey.POST /users/login_user/?username=Lucas&platform=AND&client_version=1.0 HTTP/1.1 
User-Agent: curl/7.32.0 
Host: [omitted IP]:22800 
Accept: */* 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
Content-Length: 18 

password=abcd12345 

什麼,我覺得應該是幾乎相同的包(但不是)從tcpdump的經改造:

05:57:40.801738 IP [omitted IP].dsl.teksavvy.com.55429 > 192.168.0.150.22080: Flags [P.], seq 1:320, ack 1, win 229, options [nop,nop,TS val 45578792 ecr 191219119], length 319 
[email protected]@.h...........i..... 
..z(.e..GET /users/login_user/?username=Lucas&platform=AND&client_version=1.0 HTTP/1.1 
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 
User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.2.1; Galaxy Nexus Build/JOP40D) 
Host: [omitted IP]:22800 
Connection: Keep-Alive 
Accept-Encoding: gzip 
Content-Length: 18 

數據包在哪裏可以更改?數據包在被應用程序層修改後是否記錄在tcpdump中?或者是改造撒謊並實際發送GET請求?有關如何進一步調試此問題的任何想法將不勝感激。

+0

你有沒有找到解決問題的辦法?我有一個類似的改造和appengine問題.. –

回答

0

我通過將端點url從:endpoint-address.com更改爲www.endpoint-address.com解決了問題。這就是它從無地址的服務器重定向似乎擰螺絲POST請求。

+0

這很有趣。現在我只是使用IP地址,但我想知道如果我有一個www域並使用它,它是否會工作。 – RevolutionTech