sending http post requests

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • yawnmoth

    #1

    sending http post requests

    i'm trying to send an http post request and see if the server got it
    correctly. i'm sending the http post request with this script:

    <?
    $address = 'domain.tld';
    $port = 80;

    $proxy = fsockopen("tcp://$address", (int) $port, $errno, $errstr, 1);

    $extra = "extra=blah&thi s=test";

    fputs($proxy,"P OST /test.php HTTP/1.0\r\n");
    fputs($proxy,"H ost: $address\r\n");
    fputs($proxy,"C ontent-Length: ".strlen($extra )."\r\n\r\n") ;
    fputs($proxy,"$ extra\r\n");

    while (!feof($proxy))
    print fgets($proxy);
    fclose($proxy);
    ?>

    test.php's contents are as follows:

    <?
    print_r($_POST) ;
    ?>

    this is what i want to see:

    Array
    (
    [extra] => blah
    [this] => test
    )

    this is what i am seeing:

    Array
    (
    )

    any ideas as to what i'm doing wrong and how i can fix it? thanks!

  • Colin McKinnon

    #2
    Re: sending http post requests

    yawnmoth wrote:
    [color=blue]
    > i'm trying to send an http post request and see if the server got it
    > correctly. i'm sending the http post request with this script:
    >[/color]

    My script looks almost exactly the same (but works ;). A couple of
    suggestions:
    [color=blue]
    > <?
    > $address = 'domain.tld';
    > $port = 80;
    >
    > $proxy = fsockopen("tcp://$address", (int) $port, $errno, $errstr, 1);
    >[/color]

    Timeout seems a bit short - but OK for testing locally. The 'tcp://' was new
    to me - according to the manual it's valid. Might be worth trying without.
    [color=blue]
    > $extra = "extra=blah&thi s=test";
    >
    > fputs($proxy,"P OST /test.php HTTP/1.0\r\n");
    > fputs($proxy,"H ost: $address\r\n");[/color]

    ** maybe add : "Content-type: application/x-www-form-urlencoded\r\n" ;
    [color=blue]
    > fputs($proxy,"C ontent-Length: ".strlen($extra )."\r\n\r\n") ;
    > fputs($proxy,"$ extra\r\n");
    >[/color]

    literal paste from my script:
    $p.="Content-length: $len\n\n";
    $p.= "$str\n";
    $p.= "\r\n";

    It was kind of a long tiime ago I wrote it, and can't recall why the first
    two lines didn't get a '\r'.

    HTH

    C.

    Comment

    • yawnmoth

      #3
      Re: sending http post requests


      Colin McKinnon wrote:[color=blue]
      > yawnmoth wrote:
      >[color=green]
      > > $extra = "extra=blah&thi s=test";
      > >
      > > fputs($proxy,"P OST /test.php HTTP/1.0\r\n");
      > > fputs($proxy,"H ost: $address\r\n");[/color]
      >
      > ** maybe add : "Content-type: application/x-www-form-urlencoded\r\n" ;[/color]

      That fixed it - thanks! :)

      Comment

      Working...