HTTP HTTP POST HTTP MIME POST # Server-side HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello HTTP/1.1 200 OK Date: Tue, 09 Nov 2010 14:49:00 GMT Server: test-server/fake swsclose Connection: close Content-Type: text/html hello # Client-side Mime http # tool is what to use instead of 'curl' lib643 HTTP multi-part chunked mimepost using read callback for the file part http://%HOSTIP:%HTTPPORT/%TESTNUMBER # Verify data after the test has been "shot" s/^--------------------------[A-Za-z0-9]*/------------------------------/ s/boundary=------------------------[A-Za-z0-9]*/boundary=----------------------------/ # Note that the stripping above removes 12 bytes from every occurrence of the # boundary string and since 5 of them are in the body contents, we see # (5*12) == 60 bytes less POST /%TESTNUMBER HTTP/1.1%CR Host: %HOSTIP:%HTTPPORT%CR Accept: */*%CR Transfer-Encoding: chunked%CR Content-Type: multipart/form-data; boundary=----------------------------%CR Expect: 100-continue%CR %CR 7c%CR ------------------------------%CR Content-Disposition: form-data; name="sendfile"; filename="postit2.c"%CR %CR d%CR 1%CR u%CR 1%CR m%CR 1%CR m%CR 1%CR y%CR 1%CR %CR 6b%CR %CR ------------------------------%CR Content-Disposition: form-data; name="callbackdata"%CR %CR %CR 1%CR d%CR 1%CR u%CR 1%CR m%CR 1%CR m%CR 1%CR y%CR 1%CR %CR 1b2%CR %CR ------------------------------%CR Content-Disposition: form-data; name="filename"%CR %CR postit2.c%CR ------------------------------%CR Content-Disposition: form-data; name="submit"%CR %CR send%CR ------------------------------%CR Content-Disposition: form-data; name="somename"; filename="somefile.txt"%CR Content-Type: text/plain%CR %CR blah blah%CR --------------------------------%CR %CR 0%CR %CR POST /%TESTNUMBER HTTP/1.1%CR Host: %HOSTIP:%HTTPPORT%CR Accept: */*%CR Transfer-Encoding: chunked%CR Content-Type: multipart/form-data; boundary=----------------------------%CR Expect: 100-continue%CR %CR 8a%CR ------------------------------%CR Content-Disposition: form-data; name="sendfile alternative"; filename="filename 2 "%CR %CR d%CR 1%CR u%CR 1%CR m%CR 1%CR m%CR 1%CR y%CR 1%CR %CR 6b%CR %CR ------------------------------%CR Content-Disposition: form-data; name="callbackdata"%CR %CR %CR 1%CR d%CR 1%CR u%CR 1%CR m%CR 1%CR m%CR 1%CR y%CR 1%CR %CR 1b2%CR %CR ------------------------------%CR Content-Disposition: form-data; name="filename"%CR %CR postit2.c%CR ------------------------------%CR Content-Disposition: form-data; name="submit"%CR %CR send%CR ------------------------------%CR Content-Disposition: form-data; name="somename"; filename="somefile.txt"%CR Content-Type: text/plain%CR %CR blah blah%CR --------------------------------%CR %CR 0%CR %CR