使用没有表单的Post方法发送数据

时间:2011-07-20 05:54:46

标签: php post curl

我想将数据发送到API。数据包括简单变量:用户名,密码,电子邮件等。 问题是O想要使用POST方法向此发送数据。我在谷歌搜索过这个问题,每个人都说要去参加CURL。

什么是CURL?它是函数,脚本,API还是什么?

还有其他办法吗?

我想发送这样的内容:

$username, $password to www.abc.com?username=$username&password=$password

最好的问候

5 个答案:

答案 0 :(得分:3)

通过使用此功能,您可以发送带有可选编号的发布请求 参数。只需用键值对填充postdata数组。 提供了示例用法。

<?php

function do_post_request($url, $postdata)
{
  $content = "";

  // Add post data to request.
  foreach($postdata as $key => $value)
  {
    $content .= "{$key}={$value}&";
  }

  $params = array('http' => array(
    'method' => 'POST',
    'header' => 'Content-Type: application/x-www-form-urlencoded',
    'content' => $content
  ));

  $ctx = stream_context_create($params);
  $fp = fopen($url, 'rb', false, $ctx);

  if (!$fp) {
    throw new Exception("Connection problem, {$php_errormsg}");
  }

  $response = @stream_get_contents($fp);
  if ($response === false) {
    throw new Exception("Response error, {$php_errormsg}");
  }

  return $response;
}

// Post variables.
$postdata = array(
  'username' => 'value1',
  'password' => 'value2',
  'param3' => 'value3'
);

do_post_request("http://www.example.com", $postdata);
?>

答案 1 :(得分:2)

cURL是一个“库,允许您使用许多不同类型的协议连接和通信到许多不同类型的服务器”。因此,您可以使用cURL发送HTTP POST请求。请阅读PHP手册以获取详细信息:http://www.php.net/manual/en/book.curl.php

但是cURL不是唯一的答案。您可以使用PHP Streams,甚至使用套接字函数连接到Web服务器,然后生成请求。

我个人经常使用cURL,因为它非常灵活,您可以轻松使用cookie。

答案 2 :(得分:1)

Php curl manual是一个很好的起点。

以下是在Stackoverflow上使用curl的一个例子:

Send json post using php

答案 3 :(得分:1)

xml文件中设置的数据:

$post="<?xml version="1.0\" encoding=\"UTF-8\"?>
<message xmlns=\"url\"   >
<username>".$username."</username>
<password>".$password."</password>

<status date=\"2010-11-05 14:44:10+02\"/>
<body content-type=\"text/plain\">Noobligatory text</body>
</message>";

$url = "a-url-to-send-the-data";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 6);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
curl_close($ch);

答案 4 :(得分:1)

只需使用:~/.bash_profile

file_get_contents()