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

是什么问题&解决方案?

+0

是否有任何东西在该IP上监听? – 2013-04-18 03:17:53

+0

我可以看到蝙蝠权利的一件事(与您的认证错误不直接相关)是您未传递POST_FIELDS的关联数组。您的POST数据是XML,但它也需要有一个名称。 – AgilE 2013-04-18 03:19:43

+0

@Dagon是的,否则他会得到错误404 – alfasin 2013-04-18 03:26:13

您的凭据不正确! (这就是错误401的意思)

Firefox有一个非常棒的插件叫做poster - 安装它并使用它来仔细检查请求格式是否正确。

顺便说一句,你可能要添加以下标题:

curl_setopt ($ch, CURLOPT_HTTPHEADER, Array("Content-Type: application/xml")) 

另一件事:PUT并不总是支持,尝试POST - 有时它会工作。

+0

,但该URL&ID&通过从我的服务器... – user2235070 2013-04-18 03:29:09

+0

@ user2235070你得到了相同的响应海报? – alfasin 2013-04-18 03:30:16

+0

哦,你是对的。我改变'POST'而不是'PUT'..它的工作原理! – user2235070 2013-04-18 04:17:00