Я делаю HTTP-запрос POST к серверу и создаю тело сообщения вручную.
Я думаю, что я делаю некоторую ошибку с заголовком content-length, потому что на стороне сервера, когда я получаю ответ http в начале, я вижу заголовки с ответом http 200, а затем, когда в моем php-скрипте я печатаю параметры записи и имена файлов Я получаю правильные значения, но вместе с некоторыми ненужными байтами.
Вот тело моего http сообщения:
StringBuffer str = new StringBuffer();
str.append("POST /tst/query.php HTTP/1.1\r\n"
+ "Host: myhost.com\r\n"
+ "User-Agent: sampleAgent\r\n"
+ "Content-type: multipart/form-data, boundary=AaB03x\r\n"
+ "Content-Length: 172\r\n\r\n"
+ "--AaB03x\r\n"
+ "content-disposition: form-data; name=\"asd\"\r\n\r\n123\r\n--AaB03x\r\n"
+ "content-disposition: form-data; name=\"pics\"; filename=\"file1.txt\"\r\n"
+ "Content-Type: text/plain\r\n\r\n555\r\n"
+ "--AaB03x--"
);
Вот вывод с сервера (игнорировать [0.0] - он приходит с консоли, где я печатаю результат)
[0.0] HTTP/1.1 200 OK
[0.0] Date: Sat, 10 Dec 2011 11:53:11 GMT
[0.0] Server: Apache
[0.0] Transfer-Encoding: chunked
[0.0] Content-Type: text/html
[0.0]
[0.0] 6
[0.0] Array
[0.0]
[0.0] 2
[0.0] (
[0.0]
[0.0] 1
[0.0]
[0.0] 1
[0.0]
[0.0] 1
[0.0]
[0.0] 1
[0.0]
[0.0] 1
[0.0] [
[0.0] 3
[0.0] asd
[0.0] 5
[0.0] ] =>
3
123
1
2
)
0
И скрипт php на сервере, который так прост, как вы можете себе представить:
<?php
print_r($_POST) ;
?>