在php中连接navweb服务
我正在尝试用Php连接NAVWeb服务(后面是这个) 但它返回了一个错误: SOAP-ERROR:分析WSDL:无法从加载 '':开始标签在php中连接navweb服务,php,web-services,nav,Php,Web Services,Nav,我正在尝试用Php连接NAVWeb服务(后面是这个) 但它返回了一个错误: SOAP-ERROR:分析WSDL:无法从加载 '':开始标签 预期,我正在处理完全相同的问题,但没有找到解决方案,因为它们都返回到相同的脚本。您的问题是,由于401错误代码(无法验证),您没有得到任何结果,这正是我遇到的问题。脚本最终使用CURL进行连接,但不知怎的失败了。使用这个 $client = new NTLMSoapClient(null, $baseURL.'SystemService'); 您错误地提
预期,我正在处理完全相同的问题,但没有找到解决方案,因为它们都返回到相同的脚本。您的问题是,由于401错误代码(无法验证),您没有得到任何结果,这正是我遇到的问题。脚本最终使用CURL进行连接,但不知怎的失败了。使用这个
$client = new NTLMSoapClient(null, $baseURL.'SystemService');
您错误地提供了被视为WSDL位置的baseURL。在代码中,似乎您正在尝试提供服务端点。试试看
您还可以使用类似“Wireshark”的数据包嗅探器来查看您得到的响应。预期的响应是一个xml,它似乎没有返回。也许它正在返回一个未经授权的401?这不是XML响应,也可能是原因之一
另外,其中是define('USERPWD','user:pass');在你的代码里?你没有使用身份验证吗?我有一种强烈的感觉,你只需要定义它。如果正在使用域,请确保在用户名字段中定义“域”部分。所以,“域\用户:通过”
这篇文章很好:不要使用NTLM,尝试使用简单的基本身份验证,然后使用cURL。这很容易。有关简单的实现,请参见下面的代码。您可以使用SOAP或ODATA 您还应该使用一个名为 有关基本实现,请参见下面的示例代码
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://navdynamicsip.com:port/WebService/WS/COMPANY NAME/Page/webservice",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS =>"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">\n<Body>\n<Read xmlns=\"urn:microsoft-dynamics-schemas/page/webservice\"></Read>\n</Body>\n</Envelope>",
CURLOPT_HTTPHEADER => array(
"Content-Type: text/xml; charset=utf-8",
"SoapAction: urn:microsoft-dynamics-schemas/page/webservice",
"Authorization: Basic " .base64_encode('username:password')
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
$curl=curl_init();
curl_setopt_数组($curl,数组(
CURLOPT_URL=>”https://navdynamicsip.com:port/WebService/WS/COMPANY 名称/页面/Web服务“,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_编码=>“”,
CURLOPT_MAXREDIRS=>10,
CULLOPT_超时=>0,
CURLOPT_FOLLOWLOCATION=>true,
CURLOPT_SSL_VERIFYPEER=>false,
CURLOPT_HTTP_VERSION=>CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST=>“获取”,
CURLOPT_POSTFIELDS=>“\n\n\n\n”,
CURLOPT_HTTPHEADER=>数组(
“内容类型:text/xml;字符集=utf-8”,
“SoapAction:urn:microsoft dynamics架构/page/webservice”,
“授权:基本”。base64_编码('用户名:密码')
),
));
$response=curl\u exec($curl);
$err=curl\u error($curl);
curl_close($curl);
Hi bernhard,我的域名错了,是y,它没有返回结果,现在运行正常。事实上,我在30号晚上已经解决了这个问题,但我没有在这里更新解决方案。无论如何,谢谢你的回复。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://navdynamicsip.com:port/WebService/WS/COMPANY NAME/Page/webservice",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_POSTFIELDS =>"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Envelope xmlns=\"http://schemas.xmlsoap.org/soap/envelope/\">\n<Body>\n<Read xmlns=\"urn:microsoft-dynamics-schemas/page/webservice\"></Read>\n</Body>\n</Envelope>",
CURLOPT_HTTPHEADER => array(
"Content-Type: text/xml; charset=utf-8",
"SoapAction: urn:microsoft-dynamics-schemas/page/webservice",
"Authorization: Basic " .base64_encode('username:password')
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);