Я пытаюсь отправить запрос POST на мой удаленный сервер Django через Retrofit. Я создал журнал для RestAdapter for Retrofit, но когда я отслеживаю журнал, я замечаю, что запрос отправляется правильно как 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:
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, который он обрабатывает правильно.
Вот пакет POST от tcpdump через curl:
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 через Retrofit:
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 после того, как они могут быть изменены прикладным уровнем? Или Retrofit лжет и на самом деле отправляет GET-запрос? Будем очень признательны за любые идеи о том, как отладить эту проблему.