[PHP] Re: Sending multipart/form-data request with PECL.

2009-03-04 Thread Shawn McKenzie
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.

2009-03-04 Thread Manuel Lemos
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.

2009-03-04 Thread Jason Cipriani
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.

2009-03-04 Thread Shawn McKenzie
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.

2009-03-04 Thread Jason Cipriani
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.

2009-03-04 Thread Manuel Lemos
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.

2009-03-04 Thread Jason Cipriani
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.

2009-03-04 Thread Manuel Lemos
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.

2009-03-04 Thread Jason Cipriani
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