post request with authentication in php
Note to myself how to make a POST request in php with authentication without using cURL.
Call the function with arguments:
$data = key/value pairs
$domain = www.example.com
$port = 80
$target = /somescript
making the key/value pairs
reading the result
We are only interested in the content, the headers can be spliced of with explode and setting the limit to 2.
$result = explode("\r\n\r\n", $result,2);
function
You do not necessarily have to provide key/value pairs, you could also submit xml in which case the Content-Type is application/xml.
Call the function with arguments:
$data = key/value pairs
$domain = www.example.com
$port = 80
$target = /somescript
making the key/value pairs
$postdata['key1']='value1';
$postdata['key2']='value2';
//and so on..
foreach ($postdata as $key =>$value){
$postitems[] = $key.'='.$value;
}
$data = implode('&',$postitems);
reading the result
We are only interested in the content, the headers can be spliced of with explode and setting the limit to 2.
$result = explode("\r\n\r\n", $result,2);
function
You do not necessarily have to provide key/value pairs, you could also submit xml in which case the Content-Type is application/xml.
function postrequest($data,$domain,$port,$target){
$username = 'user';
$password = 'pass';
$data_length = strlen($data);
$connection = fsockopen($domain, $port);
fputs($connection, "POST $target HTTP/1.1\r\n");
fputs($connection, "Host: $domain \r\n");
fputs($connection, "Content-Type: application/x-www-form-urlencoded \r\n");
fputs($connection, "Content-Length: $data_length\r\n");
fputs($connection, "Authorization: Basic ".base64_encode($username.':'.$password)."\r\n");
fputs($connection, "Connection: close\r\n\r\n");
fputs($connection, $data);
$result = '';
while(!feof($connection)) {
// receive the results of the request
$result .= fgets($connection, 128);
}
// close the socket connection:
fclose($connection);
$result = explode("\r\n\r\n", $result,2);
$content = isset($result[1]) ? $result[1] : '';
return $content;
}
Comments
Post a Comment