【发布时间】:2015-11-04 17:50:59
【问题描述】:
我正在尝试将 php-curl 与 Microsoft Web 服务一起使用:这是我的代码(在带有 wamp 的 Windows 10 上工作):
<?php
$location = "http://10.0.100.19:7058/FOLDER12013/OData/Company('TEST')/WS_Clienti";
$handle = curl_init($location);
$credentials = 'CPGNET\username:password';
$action =
$proxy = '11.22.33.44:8123';
$headers = [
'Method: GET',
'User-Agent: PHP-SOAP-CURL',
'Content-Type: text/xml; charset=utf-8',
];
// Authentication
curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_NTLM | CURLAUTH_BASIC | CURLAUTH_GSSNEGOTIATE | CURLAUTH_ANY);
curl_setopt($handle, CURLOPT_USERPWD, $credentials);
curl_setopt($handle, CURLINFO_HEADER_OUT, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
curl_setopt($handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($handle, CURLOPT_PROXY,$proxy);
$response = "";
echo("<pre>");
$response = curl_exec($handle);
$url_info = curl_getinfo($handle);
print_r($url_info);
echo(htmlentities($response));
echo("</pre>");
当我尝试使用 centos 7(或 ubuntu 15)中的此代码时,我遇到了未经授权的错误 401。 php、curl、libcurl 在 windows 和 linux 上具有相同的版本(并且所有扩展都与 phpinfo 相等检查)。所以,我正在尝试使用来自 linux 的 curl:
curl --negotiate -u "CPGNET\username:password" --proxy 11.22.33.44:8123 "http://10.0.100.19:7058/FOLDER12013/OData/Company('TEST')/WS_Clienti" -v
但我有一个错误:
* gss_init_sec_context() failed: : SPNEGO cannot find mechanisms to negotiate
请有人可以帮助我。我不明白为什么从linux这不起作用。 谢谢
【问题讨论】:
-
这里有什么新东西吗?我遇到了同样的问题...
标签: php linux web-services curl