我试图使用PHP代码调用POST请求,但收到了401个未经授权的错误。
我尝试使用此PHP代码发送POST请求,但抛出401未经授权的错误:
$username = 'MyDomain estuser';
$password = '123456';
$url = 'http://10.20.30.40:8080/TargetPage.aspx';
$data = array(
'username' => $username,
'password' => $password,
'postdata' => 'InputParameter1=Test1&InputParameter2=Test2'
);
$options = array(
'http' => array
(
'method' => 'POST',
'header' => "Content-type: application/x-www-form-urlencoded
",
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
解决方案
您没有执行正确的基本身份验证。您必须自己构建身份验证标头:
$options = array(
'http' => array(
'header' => 'Authorization: Basic ' . base64_encode("$username:$password")
)
);
您不能简单地将用户名/密码元素放入数组并期望它工作。PHP不知道您正在构建一个指向HTTP基本身份验证的流...你必须自己提供一切。
相关文章