Gav*_*tes 4 php soap magento iis-7.5
我正在尝试使用SOAP访问Magento API.我的代码工作正常,但客户端希望密码保护Magento主文件夹.这样做会破坏对API的访问并导致错误.
文档表明这不是问题,您只需指定用户名/密码,但这不起作用.
我正在使用PHP和IIS,通过Plesk 10设置密码保护.这是否使用基本HTTP身份验证或其他?
我的访问代码是:
$client = new SoapAuthClient($GLOBALS["magento_api_path"],array(
'login'=>"admin",
'password'=>"password"
)
);
$session = $client->login($GLOBALS["magento_api_user"], $GLOABLS["magento_api_password"] ,
array(
'login'=>"admin",
'password'=>"password"
) );
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.domain.co.uk/magento/index.php/api/index/index/wsdl/1/' : failed to load external entity "http://www.domain.co.uk/magento/index.php/api/index/index/wsdl/1/" in C:\Inetpub\vhosts\domain.co.uk\httpdocs\backend\index.php:20 Stack trace: #0 C:\Inetpub\vhosts\domain.co.uk\httpdocs\backend\index.php(20): SoapClient->__call('login', Array) #1 C:\Inetpub\vhosts\domain.co.uk\httpdocs\backend\index.php(20): SoapClient->login('backenduser', 'backendwebuser', Array) #2 {main} thrown in C:\Inetpub\vhosts\domain.co.uk\httpdocs\backend\index.php on line 20
Run Code Online (Sandbox Code Playgroud)
引用的行是$ client-> login命令.
有什么建议?
很久以前我遇到过类似的问题.
就我而言,我没有立即意识到我需要.htaccess
在创建SoapClient
实例时使用凭据,但是将SOAP API凭据传递给该login
方法.
我正在传递SOAP API凭据,并像您一样得到类似的错误.
这对我有用(1.3.x版本.但截至今天仍适用于我):
$cProxy = new SoapClient(
URL . 'index.php/api/soap/?wsdl',
array(
'login' => HTACCESS_USER,
'password' => HTACCESS_PASS
)
);
$rSessionId = $cProxy->login(
SOAP_USER,
SOAP_PASS
);
Run Code Online (Sandbox Code Playgroud)
只是为了保存,你没有被错字困住:你$GLOABLS["magento_api_password"]
作为第二个参数传递给login
方法,应该是$GLOBALS["magento_api_password"]
.
最后,你将第三个参数传递给login
我认为已经过时的方法,因为afaik它被定义为只有两个参数:
<message name="login">
<part name="username" type="xsd:string" />
<part name="apiKey" type="xsd:string" />
</message>
Run Code Online (Sandbox Code Playgroud)