PHP - 在服务器端卷曲HTTP认证
我想改变在PHP的XML值,但不改变....PHP - 在服务器端卷曲HTTP认证
<?php
$url = "http://192.168.1.103:8080/ew.xml";
$xml = '<?xml version="1.0" ?>
<DDCConfig:getValue xmlns:DDCConfig="urn:SMUDDCConfiguration">
<DDCConfig:Network>
<DDCConfig:LocalIP>192.168.103.223</DDCConfig:LocalIP>
<DDCConfig:GlobalIP>168.188.127.123</DDCConfig:GlobalIP>
<DDCConfig:RootBridge>Yes</DDCConfig:RootBridge>
</DDCConfig:Network>
</DDCConfig:getValue>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_USERPWD, "lmk:alrud89");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_URL, "$url");
curl_setopt($ch, CURLOPT_PORT, 8080);
curl_setopt($ch, CURLOPT_PUT, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,array($xml));
$http_result = curl_exec($ch);
if($http_result){
echo $http_result;
}else{
echo curl_error($ch);
}
curl_close($ch);
?>
错误消息
*关于连接()到192.168.1.103端口8080(#0) *试图192.168.1.103 ...
*使用基本与用户 'LMK' 连接
*服务器AUTH
> PUT /ew.xml HTTP/1.1
>授权:基本bG1rOmFscnVkODk =
>主机:192.168.1.103:8080接受:/
>传输编码:分块
>期望值:100继续
< HTTP/1.1 401未授权
<内容-length:0
<
> WWW验证:摘要QOP = “AUTH”,境界= “mydomain.com”, 随机数= “1366254379”
* HTTP错误发送的结束之前,停止发送
*期末连接#0
是什么问题&解决方案?
您的凭据不正确! (这就是错误401的意思)
Firefox有一个非常棒的插件叫做poster
- 安装它并使用它来仔细检查请求格式是否正确。
顺便说一句,你可能要添加以下标题:
curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("Content-Type: application/xml"))
另一件事:PUT并不总是支持,尝试POST - 有时它会工作。
,但该URL&ID&通过从我的服务器... – user2235070 2013-04-18 03:29:09
@ user2235070你得到了相同的响应海报? – alfasin 2013-04-18 03:30:16
哦,你是对的。我改变'POST'而不是'PUT'..它的工作原理! – user2235070 2013-04-18 04:17:00
是否有任何东西在该IP上监听? – 2013-04-18 03:17:53
我可以看到蝙蝠权利的一件事(与您的认证错误不直接相关)是您未传递POST_FIELDS的关联数组。您的POST数据是XML,但它也需要有一个名称。 – AgilE 2013-04-18 03:19:43
@Dagon是的,否则他会得到错误404 – alfasin 2013-04-18 03:26:13