我正在使用Microsoft C#成功地连接到Microsoft web服务。我必须提供用户名和密码(在C#代码中);并将证书( .cer格式)安装到系统证书的“根证书颁发机构”部分。
如何在PHP中连接到这样的web服务?我问这个问题的原因是,我所见过的所有方法(比如创建SSL子类的wsdl2php )似乎都假定了各种东西,比如SoapClient证书、SSL密钥文件和SSL密钥密码。
所以这一切都让我感到困惑。我不确定什么应该放在哪里。我不确定我的“根证书颁发机构”( .cer文件)应该放在哪里,以及用户名和密码应该放在哪里。有什么想法吗?
发布于 2011-07-31 01:12:27
所有这些都可以通过使用ssl options的soapclient和stream_context_create来完成
<?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
));在soap中,不使用http身份验证而只使用soap调用的情况并不少见,文档化是必不可少的。
使用soapclient和使用classmap的类将soaptype映射到php类可能是有益的。
发布于 2011-07-30 05:40:30
通常,如果您使用常规SSL调用will服务,您的URL将如下所示:
https://username:password@myserver.com/mywebservice.php
然后是SSL证书的发布。我正在使用类似于从SSL保护的SVN web前端读取的内容。除了以运行您的any服务器(apache/IIS)的用户身份登录到服务器并手动接受证书之外,我不知道还有什么其他解决方案。在SVN的情况下,您可以结帐,它将要求您接受证书。我不完全确定这对于普通的HTTPS请求是如何工作的,但也许您可以通过在浏览器中加载get服务来获得证书?(或者使用wget或一些奇特的东西,如果您足够幸运地运行Linux)
另外,你的代码是PHP代码还是C#代码?如果是C#,你可能需要做一些完全不同的事情。
https://stackoverflow.com/questions/6830137
复制相似问题