在不提交 HTML 表单的情况下发送 POST 请求


Sending a POST request without submitting an HTML form

我想知道,是否可以在不使用HTML表单的情况下在PHP中发送HTTP POST。这可以使用PHP在内部完成吗?如果没有,也许使用 JavaScript 或 jQuery?

是的,你可以。更简单的解决方案是使用 curl。此外,您只需打开远程服务器的套接字并发送原始 HTTP 请求。

请参阅文档中的 curl 示例

有几种方法可以在 PHP 中创建 POST 请求,这种方法是使用裸 PHP 代码,不需要外部库:

<?php
function postRequest($url, $data, $optionalHeaders = null)
{
    $params = array('http' => array(
        'method' => 'POST',
        'content' => $data
    ));
    if ($optionalHeaders !== null) {
        $params['http']['header'] = $optionalHeaders;
    }
    $ctx = stream_context_create($params);
    $fp = @fopen($url, 'rb', false, $ctx);
    if (!$fp) {
        throw new Exception("Problem with $url, $errormsg");
    }
    $response = @stream_get_contents($fp);
    if ($response === false) {
        throw new Exception("Problem reading data from $url, $errormsg");
    }
    return $response;
}

是的。几乎可以使用任何语言发送HTTP POST或GET请求。我不是PHP专家,但尝试寻找一种处理HTTPRequests的方法,并使用此类库的方法将POST数据添加到请求中。

您可以使用 cURL php 扩展名。您可以在下面检查代码:

<?php
function httpPost($url,$params){
  $postData = '';
   //create name value pairs seperated by &
   foreach($params as $k => $v)
   {
      $postData .= $k . '='.$v.'&';
   }
   rtrim($postData, '&');

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, count($postData));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);   
$output=curl_exec($ch);
curl_close($ch);
return $output;

}
$params = array(
   "name" => "Ravishanker Kusuma",
   "age" => "32",
   "location" => "India"
);
echo httpPost("http://www.jmediatechnology.eu/script.php",$params);
?>

更多示例在这里: http://hayageek.com/php-curl-post-get/#curl-post