【问题标题】:php - CURL HTTP Authentication at server sidephp - 服务器端的 CURL HTTP 身份验证
【发布时间】:2013-04-11 00:45:14
【问题描述】:

我想更改 php 中的 xml 值,但不要更改 ....

<?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); 
?>

错误信息是

* 即将 connect() 到 192.168.1.103 端口 8080 (#0) * 正在尝试 192.168.1.103...
* 已连接
* 服务器身份验证使用 Basic 和用户 'lmk'
> PUT /ew.xml HTTP/1.1
> 授权:基本 bG1rOmFscnVkODk=
> 主机:192.168.1.103:8080 接受:/
> 传输编码:分块
> 期望:100-继续
> WWW-Authenticate: Digest qop="auth", realm="mydomain.com", nonce="1366254379"
* 发送结束前的 HTTP 错误,停止发送
* 关闭连接#0

问题和解决方法是什么?

【问题讨论】:

  • 有什么东西在监听那个 ip 吗?
  • 我可以在 bat 右侧看到的一件事(与您的身份验证错误没有直接关系)是您没有为 POST_FIELDS 传递关联数组。您的 POST 数据是 XML,但它也需要有一个名称。
  • @Dagon 是的,否则他会收到错误 404
  • @Dagon no...但我可以通过 firefox 看到数据

标签: php xml curl


【解决方案1】:

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

有一个很棒的 Firefox 插件,名为 poster - 安装它并使用它来仔细检查请求的格式是否正确。

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

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

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

【讨论】:

  • @user2235070 你用海报得到了同样的回应吗?
  • 哦,你是对的。我改变了 'POST' 而不是 'PUT'.. 它有效!
  • 就像 AgilE 说的,尝试用 $xml 替换 array($xml)
  • 你是说这部分吗? curl_setopt($ch, CURLOPT_POSTFIELDS,array($xml));我已经做了..不工作...不更改数据...
  • @user2235070 在这种情况下,您需要从服务器端调试它,首先检查服务器日志,看看是否有任何错误。你有没有像我展示的那样添加内容类型标题?
猜你喜欢
  • 2015-12-19
  • 2018-02-26
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多