我正在尝试通过 PHP curl 通过 WSDL 从动态 SOAP 调用方法。我的 webapp 和 SOAPUI 都收到此错误。可能是什么问题呢?从具有相同凭据的 .NET 测试程序访问时,它工作正常。刚刚面临 PHP 方面的问题,说禁止使用 1317 代码。指定的帐号不存在我一直在尝试调用该方法并面临不同的问题,我遇到的最后一个问题是这个问题。我想也许用户代理我改变了它我使用了 SOAPUI。一样。我所知道的是用户已在 Azure AD 中注册,并且应该拥有该应用程序的授权。POST是POST /soap/services/servicemethodname?wsdl HTTP/1.1 Host: domainname.sandbox.ax.dynamics.com Accept: text/xml Accept-Encoding: gzip,deflate Connection: Keep-Alive Content-type: text/xml User-Agent: Apache-HttpClient Authorization: Bearer longTokenStringSoapaction: "http://tempuri.org/webservice/method" Content-Length: 795 回应是 HTTP/1.1 500 Internal Server Error Cache-Control: private Content-Type: text/xml; charset=utf-8 Server: Microsoft-IIS/10.0 Strict-Transport-Security: max-age=31536000; includeSubDomains Set-Cookie: ASP.NET_SessionId=hghtgkuhlihkjg; path=/; secure; HttpOnly Set-Cookie: ms-dyn-csrftoken= someTokenSTring; path=/; secure ms-dyn-fqhn: ms-dyn-namespace: namespace ms-dyn-tenant: tenantidstring ms-dyn-role: ms-dyn-aid: aidString X-Powered-By: ASP.NET X-Content-Type-Options: nosniff X-Frame-Options: SAMEORIGIN p3p: CP="No P3P policy defined. Read the Microsoft privacy statement at https://go.microsoft.com/fwlink/?LinkId=271135" Strict-Transport-Security: max-age=31536000; includeSubDomains Date: Thu, 01 Aug 2019 19:24:52 GMT Content-Length: 1112 a:ForbiddenForbidden1317System.ComponentModel.Win32ExceptionThe specified account does not exist0-2147467259我需要能够无错误地调用该方法并获取它发送的值。
1 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
好吧,终于找到了解决方案。它有助于阅读有关您使用的类和使用的不同系统的文档。就我而言,我试图将我的应用程序与 microsoft dynamics 365 ax 集成,所以我也必须仔细阅读。
我阅读了很多文件,其中一些与不同的动态服务相关,但这个帮助最大
由于soap服务需要授权标头,因为他们使用的是Windows身份验证,我们需要从oAuth链接中获取令牌。
https://login.windows.net/$tenantDomainName/oauth2/token
PS:我从github PHPConsoleApplication知道的 oauth2 链接
我使用 PHP CURL 来获取我的授权令牌,然后使用 PHP 的 SoapClient 类创建了一个客户端。
确保在标头中添加授权令牌,如下所示:
$arrayOpt = array(
'stream_context' => stream_context_create(
array('http' =>'Authorization: Bearer tokenString')
));
$client = new SoapClient($wsdl, $arrayOpt);
$response = $client->serviceMethod($parameters);
var_dump($response);
您将获得该方法的值。
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报
0/150
提交
取消