我正在用PHP构建一个REST web服务客户端,目前我正在使用curl向该服务发出请求。
如何使用curl发出经过身份验证的(http basic)请求?我必须自己添加标题吗?
发布于 2010-01-26 23:45:41
你想要这个:
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
Zend有一个REST客户端和zend_http_client,我相信PEAR也有某种包装器。但这很容易由你自己来完成。
因此,整个请求可能如下所示:
$ch = curl_init($host);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/xml', $additionalHeaders));
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payloadName);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$return = curl_exec($ch);
curl_close($ch);
发布于 2014-03-13 00:43:19
CURLOPT_USERPWD
基本上发送带有http头部的user:password
字符串的base64,如下所示:
Authorization: Basic dXNlcjpwYXNzd29yZA==
因此,除了CURLOPT_USERPWD
之外,您还可以使用HTTP-Request
header选项,就像下面这样处理其他header:
$headers = array(
'Content-Type:application/json',
'Authorization: Basic '. base64_encode("user:password") // <---
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
发布于 2015-08-28 21:17:17
最简单、最自然的方式就是直接使用CURL。
这对我来说很有效:
<?php
$login = 'login';
$password = 'password';
$url = 'http://your.url';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
$result = curl_exec($ch);
curl_close($ch);
echo($result);
https://stackoverflow.com/questions/2140419
复制相似问题