Magento 致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:解析架构:can';t从';http://schemas.xmlsoap.org/soap/encoding/'
首先,我很抱歉地说,我把这些问题放在这里,因为在stackoverflow中有这么多相同的问题。但它似乎不适合我 我多次使用MagentoSOAP2API,这个错误并不经常发生。但是当我今天运行脚本时,它总是犯一个致命的错误 我已经找到了一些方法来解决这个问题,例如,一些文章告诉我在/app/code/core/Mage/Api/etc/wsdl.xml中更改此代码Magento 致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:解析架构:can';t从';http://schemas.xmlsoap.org/soap/encoding/',magento,soap,wsdl,Magento,Soap,Wsdl,首先,我很抱歉地说,我把这些问题放在这里,因为在stackoverflow中有这么多相同的问题。但它似乎不适合我 我多次使用MagentoSOAP2API,这个错误并不经常发生。但是当我今天运行脚本时,它总是犯一个致命的错误 我已经找到了一些方法来解决这个问题,例如,一些文章告诉我在/app/code/core/Mage/Api/etc/wsdl.xml中更改此代码 Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Par
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: can't import schema from 'http://schemas.xmlsoap.org/soap/encoding/'
对此
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemalocation="http://schemas.xmlsoap.org/soap/encoding/">
</import>
我遵循了这个,但它又犯了一个错误,如下所示
<!--
<import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />
-->
致命错误:未捕获的SoapFault异常:[WSDL]SOAP-error:分析架构:架构中意外
然后我不知道出了什么问题,因为这个脚本总是运行得很好,但今天,我甚至不更改任何代码行。我的问题是,,
1、有什么办法解决吗?
2、我是否可以将这个xmlsoap.org xml文件设置为本地主机或我自己的服务器,这样我的脚本就不会依赖于服务器上的文件
提前谢谢你 首先,请不要篡改任何Magento API V2 WSDL配置文件的默认元素。这是一条基本规则 请记住在每个自定义WSDL文件的开头编写以下元素,或者确保在目标现有模块的WSDL文件的开头存在以下元素:-
定义
”元素(
-开始标记)类型
”元素(
-开始标记)schema
”元素(
-start标记)import
”元素(
-单例标记,不带结束标记)现在回到你们的问题上来 1。有什么办法解决吗? 如前所述,请在WSDL文件的开头维护上述元素定义 “
import
”语句应该是:-
没有结束标记。 属性名称也是“
schemaLocation
”&而不是“schemaLocation
”。请跟着骆驼皮走
2。我可以将这个xmlsoap.org xml文件设置为本地主机或我自己的服务器,这样我的脚本就不会依赖于服务器上的文件吗? 是的,你可以,但你需要知道并保持两个关键点:-
名称空间
”&“模式位置
”必须为URI类型。因此,这两个属性的本地文件也必须在本地浏览器中使用HTTP协议进行访问然而,我希望我已经回答了你所有的问题。希望有帮助。使用如下代码: //创建soap对象
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing Schema: unexpected <import> in schema
//使用api用户名和api密钥创建授权会话id
`$proxy = new SoapClient('http://localhost/magento/index.php/api/soap/?wsdl');`
$sessionId=$proxy->login('apiUser','apiKey');
$productinfo=$proxy->call($sessionId,'product.info',16);
回声“;打印(productinfo);
只是一些可接受解决方案的细节。
encoding.xsd
的文件中(将文件另存为)/var/www/magento/
find-名称“wsdl*.xml”| xargs grep schemaLocation 2>/dev/null | grep org
在我的系统上./app/code/core中有12个匹配文件./app/code/local中有2个来自第三方扩展名的匹配文件
到
备注:在这种情况下,encoding.xsd文件比api路径高4个目录http://sampleshop.com/testsystem/index.php/api/v2_soap/?wsdl
在您的实时系统中,2(不带index.php)或3(带index.php)次
。/“
可能是正确的示例脚本
这个解决方案对我很有效,只是想添加一些细节,因为它需要一些时间才能运行。
系统:magento CE 1.7.0.2
SOAP:php SOAP在magento服务器上使用php 5.3版,在远程服务器上使用php 5.6版
$sessionId = $proxy->login('apiUser', 'apiKey');
$productinfo = $proxy->call($sessionId, 'product.info',16);
echo "<pre>";print_r($productinfo);