我使用Microsoft C#成功连接到Microsoft Web服务。我必须提供用户名,密码(在C#代码中);并将证书(以.cer格式)安装到系统证书的“根证书颁发机构”部分。
如何在PHP中连接到这样的Web服务?我问的原因是我所看到的所有方法(例如wsdl2php,它创建了一个SoapClient子类)似乎都假设了各种各样的东西,例如SSL证书,SSL密钥文件和SSL密钥密码。
所以这一切都让我感到困惑。我不确定应该去哪里。我不确定我的“根证书权限”(.cer文件)应该去哪里,以及用户名和密码应该去哪里。有什么想法吗?
答案 0 :(得分:5)
<?php
$context = stream_context_create(array(
'https' => array(
'cafile' => '/path to file',
'verify_peer' => true
)));
new soapclient("https://localhost/index.php?wsdl",array(
'login'=>'admin',
'password'=>'passss',
'stream_context'=> $context
));
在肥皂中使用http auth而不仅仅是肥皂呼叫并不常见,documnetation是必不可少的
使用soapclient whith类使用classmap将soaptypes映射到php clases是有益的
答案 1 :(得分:0)
通常,如果您使用常规SSL呼叫网络服务,您的网址将如下所示:
https://username:password@myserver.com/mywebservice.php
然后是SSL证书的问题。我正在使用类似于从受SSL保护的SVN Web前端读取的内容。除了以运行您的Web服务器(apache / IIS)并手动接受证书的用户身份登录服务器之外,我不知道任何其他解决方案。在SVN的情况下,您可以结账,它会要求您接受证书。我不完全确定这对于普通的HTTPS请求是如何工作的,但也许您可以通过在浏览器中加载Web服务来获取证书? (或者如果你有幸运行Linux,可以使用wget或者花哨的东西)
此外,您的代码是PHP代码还是C#代码?如果它是C#,你可能需要完全做其他事情。