[PHP] Re: Sending multipart/form-data request with PECL.
Jason Cipriani wrote: I am trying to submit a request to an HTTP server with multipart/form-data encoded data. I'm using PECL's HttpRequest (although I'm open to alternatives). I am using PHP5. I noticed that if you call addPostFile to add a file, PECL will send the file, and all other post parameters, with multipart/form-data encoding, so I know PECL has the capability to do it. If you simply call addPostFields but never call addPostFile, it uses standard post encoding. Is there a way to force PECL to use multipart/form-data encoding for all post fields added with addPostFields, even when you are not calling addPostFile to add a file? If not, is there another good way to encode multipart data with PHP? Thanks! Jason Try: setContentType() -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] Re: Sending multipart/form-data request with PECL.
Hello, on 03/04/2009 03:33 PM Jason Cipriani said the following: I am trying to submit a request to an HTTP server with multipart/form-data encoded data. I'm using PECL's HttpRequest (although I'm open to alternatives). I am using PHP5. I noticed that if you call addPostFile to add a file, PECL will send the file, and all other post parameters, with multipart/form-data encoding, so I know PECL has the capability to do it. If you simply call addPostFields but never call addPostFile, it uses standard post encoding. Is there a way to force PECL to use multipart/form-data encoding for all post fields added with addPostFields, even when you are not calling addPostFile to add a file? If not, is there another good way to encode multipart data with PHP? I have no idea because I do not use PECL extensions. I use this HTTP client class for emulating browser form submission. Take a look at the test_http_post.php that has examples of how to upload forms using POST requests: http://www.phpclasses.org/httpclient -- Regards, Manuel Lemos Find and post PHP jobs http://www.phpclasses.org/jobs/ PHP Classes - Free ready to use OOP components written in PHP http://www.phpclasses.org/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Sending multipart/form-data request with PECL.
On Wed, Mar 4, 2009 at 2:10 PM, Shawn McKenzie nos...@mckenzies.net wrote: Jason Cipriani wrote: Is there a way to force PECL to use multipart/form-data encoding for all post fields added with addPostFields, even when you are not calling addPostFile to add a file? Try: setContentType() Thanks! But, I tried that, and according to my packet sniffer, calling setContentType() actually seems to have no effect whatsoever on the request! Is there something I have to enable? Here's an example, it's just a fake request, used to see what HttpRequest outputs: $fields = array(field=value,other=something) $http_req = new HttpRequest('http://localhost:/resource'); $http_req-setMethod(HTTP_METH_POST); $http_req-setContentType('multipart/form-data'); $http_req-addPostFields($fields); $http_req-send(); Here is what it produces, it's still application/x-www-form-urlencoded: === BEGIN REQUEST === POST /resource HTTP/1.1 User-Agent: PECL::HTTP/1.6.1-dev (PHP/5.2.6) Host: localhost: Accept: */* Content-Length: 27 Content-Type: application/x-www-form-urlencoded field=valueother=something === END REQUEST === Even if I call setContentType with some made up content type, it doesn't affect the output; am I doing something wrong there? Thanks! Jason -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Sending multipart/form-data request with PECL.
Jason Cipriani wrote: On Wed, Mar 4, 2009 at 2:10 PM, Shawn McKenzie nos...@mckenzies.net wrote: Jason Cipriani wrote: Is there a way to force PECL to use multipart/form-data encoding for all post fields added with addPostFields, even when you are not calling addPostFile to add a file? Try: setContentType() Thanks! But, I tried that, and according to my packet sniffer, calling setContentType() actually seems to have no effect whatsoever on the request! Is there something I have to enable? Here's an example, it's just a fake request, used to see what HttpRequest outputs: $fields = array(field=value,other=something) $http_req = new HttpRequest('http://localhost:/resource'); $http_req-setMethod(HTTP_METH_POST); $http_req-setContentType('multipart/form-data'); $http_req-addPostFields($fields); $http_req-send(); Here is what it produces, it's still application/x-www-form-urlencoded: === BEGIN REQUEST === POST /resource HTTP/1.1 User-Agent: PECL::HTTP/1.6.1-dev (PHP/5.2.6) Host: localhost: Accept: */* Content-Length: 27 Content-Type: application/x-www-form-urlencoded field=valueother=something === END REQUEST === Even if I call setContentType with some made up content type, it doesn't affect the output; am I doing something wrong there? Thanks! Jason I don't know. I just looked it up in the manual. If it doesn't work then it may be a bug. Hard to tell because the documentation for httprequest is very light. -- Thanks! -Shawn http://www.spidean.com -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Sending multipart/form-data request with PECL.
On Wed, Mar 4, 2009 at 7:12 PM, Shawn McKenzie nos...@mckenzies.net wrote: Jason Cipriani wrote: On Wed, Mar 4, 2009 at 2:10 PM, Shawn McKenzie nos...@mckenzies.net wrote: Jason Cipriani wrote: Is there a way to force PECL to use multipart/form-data encoding for all post fields added with addPostFields, even when you are not calling addPostFile to add a file? Try: setContentType() Thanks! But, I tried that, and according to my packet sniffer, calling setContentType() actually seems to have no effect whatsoever on the request! Is there something I have to enable? Here's an example, it's just a fake request, used to see what HttpRequest outputs: $fields = array(field=value,other=something) $http_req = new HttpRequest('http://localhost:/resource'); $http_req-setMethod(HTTP_METH_POST); $http_req-setContentType('multipart/form-data'); $http_req-addPostFields($fields); $http_req-send(); Here is what it produces, it's still application/x-www-form-urlencoded: === BEGIN REQUEST === POST /resource HTTP/1.1 User-Agent: PECL::HTTP/1.6.1-dev (PHP/5.2.6) Host: localhost: Accept: */* Content-Length: 27 Content-Type: application/x-www-form-urlencoded field=valueother=something === END REQUEST === Even if I call setContentType with some made up content type, it doesn't affect the output; am I doing something wrong there? Thanks! Jason I don't know. I just looked it up in the manual. If it doesn't work then it may be a bug. Hard to tell because the documentation for httprequest is very light. Thanks. I actually had a look at the HttpRequest source code, and I can see the logic where it switches to multipart encoding if files are present but it actually appears that it's not possible to force it to do that. It's sort of annoying that it's right at my finger tips but there's no way to do it, and for sort of a silly reason (there's arbitrarily no way to pick which encoding to use, it decides for you even though it has the capability of doing anything). A custom PECL build is not an option, unfortunately. I'll have to check out the httpclient class that Manuel Lemos mentioned. Thanks, Jason -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Sending multipart/form-data request with PECL.
Hello, on 03/05/2009 02:31 AM Jason Cipriani said the following: Thanks. I actually had a look at the HttpRequest source code, and I can see the logic where it switches to multipart encoding if files are present but it actually appears that it's not possible to force it to do that. It's sort of annoying that it's right at my finger tips but there's no way to do it, and for sort of a silly reason (there's arbitrarily no way to pick which encoding to use, it decides for you even though it has the capability of doing anything). A custom PECL build is not an option, unfortunately. I'll have to check out the httpclient class that Manuel Lemos mentioned. Yes, the HTTP client class follows the same logic but has a variable named force_multipart_form_post that you can set to make it send multipart form posts as if you were submitting a form with an empty file input. -- Regards, Manuel Lemos Find and post PHP jobs http://www.phpclasses.org/jobs/ PHP Classes - Free ready to use OOP components written in PHP http://www.phpclasses.org/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Sending multipart/form-data request with PECL.
On Thu, Mar 5, 2009 at 12:48 AM, Manuel Lemos mle...@acm.org wrote: Hello, on 03/05/2009 02:31 AM Jason Cipriani said the following: Thanks. I actually had a look at the HttpRequest source code, and I can see the logic where it switches to multipart encoding if files are present but it actually appears that it's not possible to force it to do that. It's sort of annoying that it's right at my finger tips but there's no way to do it, and for sort of a silly reason (there's arbitrarily no way to pick which encoding to use, it decides for you even though it has the capability of doing anything). A custom PECL build is not an option, unfortunately. I'll have to check out the httpclient class that Manuel Lemos mentioned. Yes, the HTTP client class follows the same logic but has a variable named force_multipart_form_post that you can set to make it send multipart form posts as if you were submitting a form with an empty file input. Thanks; is there documentation for this anywhere? Jason -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Sending multipart/form-data request with PECL.
Hello Jason, on 03/05/2009 03:17 AM Jason Cipriani said the following: Thanks. I actually had a look at the HttpRequest source code, and I can see the logic where it switches to multipart encoding if files are present but it actually appears that it's not possible to force it to do that. It's sort of annoying that it's right at my finger tips but there's no way to do it, and for sort of a silly reason (there's arbitrarily no way to pick which encoding to use, it decides for you even though it has the capability of doing anything). A custom PECL build is not an option, unfortunately. I'll have to check out the httpclient class that Manuel Lemos mentioned. Yes, the HTTP client class follows the same logic but has a variable named force_multipart_form_post that you can set to make it send multipart form posts as if you were submitting a form with an empty file input. Thanks; is there documentation for this anywhere? Sorry, not yet, but the example scripts have plenty of commented code that pretty much explains how to do what you need. For sending POST requests, take a look at the test_http_post.php example script. For further support requests about this class, try the support forum: http://www.phpclasses.org/discuss/package/3/ -- Regards, Manuel Lemos Find and post PHP jobs http://www.phpclasses.org/jobs/ PHP Classes - Free ready to use OOP components written in PHP http://www.phpclasses.org/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: Sending multipart/form-data request with PECL.
On Thu, Mar 5, 2009 at 1:48 AM, Manuel Lemos mle...@acm.org wrote: Hello Jason, on 03/05/2009 03:17 AM Jason Cipriani said the following: Thanks. I actually had a look at the HttpRequest source code, and I can see the logic where it switches to multipart encoding if files are present but it actually appears that it's not possible to force it to do that. It's sort of annoying that it's right at my finger tips but there's no way to do it, and for sort of a silly reason (there's arbitrarily no way to pick which encoding to use, it decides for you even though it has the capability of doing anything). A custom PECL build is not an option, unfortunately. I'll have to check out the httpclient class that Manuel Lemos mentioned. Yes, the HTTP client class follows the same logic but has a variable named force_multipart_form_post that you can set to make it send multipart form posts as if you were submitting a form with an empty file input. Thanks; is there documentation for this anywhere? Sorry, not yet, but the example scripts have plenty of commented code that pretty much explains how to do what you need. For sending POST requests, take a look at the test_http_post.php example script. For further support requests about this class, try the support forum: http://www.phpclasses.org/discuss/package/3/ Awesome, thanks. The code was clear enough that I was able to make it work pretty easily. It seems to be doing everything that I want. Nice work! Thanks again! Jason -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php