简单对象访问协议(SOAP)是用于在Web服务的实现中交换结构化信息的协议规范。
获取 SoapFault - 故障代码:'SOAP-ENV:服务器' 故障字符串:'过程'登录'不存在' 故障因素:'空'详细信息:空错误
我想在android代码中调用Magento Soap v2 API方法。为此,我需要根据此http://www.magentocommerce.com/api/soap/catalog/catalogCategory/catalog_category.tree.html的session_id 我
您好,我正在使用 Magento Soap clinet。我在一个控制器内创建了很多函数,这就是为什么我想将 $client 和 $session_id 设置为全局的。 这是我的代码- 您好,我正在使用 Magento Soap clinet。我正在一个控制器内创建很多功能,这就是为什么我想将 $client 和 $session_id 设置为全局。 这是我的代码- <?php //关闭所有错误报告 error_reporting(0); //包括 SOAP 客户端 require_once APPPATH.'third_party/client/soap_clinet.php'; //API 类 class Api extends CI_Controller{ //公共变量 public $variable = "tree"; //working fine //如下定义$client对象也会产生错误。 public $client = new SoapClient('http://localhost/mystore/index.php/api/?wsdl'); public $session_id; public function _construct() { parent::_construct(); } function index() { $data['title'] = "SOAP"; $data['heading'] = "Showing Magento SOAP connectiviy"; $this->load->view('apiview', $data); } //我需要此功能的帮助 function login(){ try{ $this->session_id = $this->client->login( 'fmniloy', 'abc123' ); echo 'Connection complete: session id ='.$this->session_id; } catch (SoapFault $fault) { echo 'Fault Code: '.$fault->faultcode.'<br/>'; echo 'Fault Reason: '.$fault->faultstring; } } //login ends function tree() { //it's printing global $variable successfully echo $this->variable; } } ?> 终于我找到了解决方案。 首先,不可能将对象声明为公共对象。我们可以将 $client 对象和 $session_id 传递给其他函数。解决办法如下。 <?php //关闭所有错误报告 错误报告(0); //包括 SOAP 客户端 require_once APPPATH.'third_party/client/soap_clinet.php'; //API 类 class Api extends CI_Controller{ //public variable public $remote_server = "http://localhost/mystore/index.php/api/?wsdl"; public $username = "fmniloy"; public $password = "abc123"; public function _construct() { parent::_construct(); } function index() { $data['title'] = "SOAP"; $data['heading'] = "Showing Magento SOAP connectiviy"; $this->load->view('apiview', $data); } //Login to Server function login(){ //login to Client Serve $client = new SoapClient($this->remote_server); try{ //filled with webservice username and passwd $session_id = $client->login( $this->username, $this->password ); //echo 'Connection complete: session id ='. $session_id; } catch (SoapFault $fault) { echo 'Fault Code: '.$fault->faultcode.'<br/>'; echo 'Fault Reason: '.$fault->faultstring; } //将$client对象和$session_id输入到数组中 $soap_vars = array($client, $session_id); //返回值供其他函数使用 返回 $soap_vars; } //登录结束 function tree() { $soap_vars = $this->login(); $result = $soap_vars[0]->call($soap_vars[1], 'catalog_category.tree'); echo '</br></br></br>Catagory Tree: '; var_dump($result); } } ?>
致命错误:未捕获的 SoapFault 异常:[Client] 函数(“调用”)
我正在使用 SOAP API 在 Magento 中使用其 SKU 打印产品信息。代码在本地服务器上运行良好,但在实时服务器上引发致命错误致命错误:未捕获的 SoapFault 除外...
Magento 1.9.1.0:无法使用soap cleint加载WSDL
我已经尝试了以下线程中给出的所有答案。 [1] Magento SOAP API - PHP 登录方法调用引发异常:“看起来我们没有 XML 文档” [2] Magento SOAP API ...
我有基于 Magento 的 SOAP+XML Web 服务。我正在使用 ksoap2 作为库 Web 服务调用。现在,下面是我的 API 的 magento 请求格式,其名称为“customer.list” 我有基于 Magento 的 SOAP+XML Web 服务。我正在使用 ksoap2 作为库 Web 服务调用。现在,下面是我的 API 的 magento 请求格式,其名称为“customer.list” <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding" xmlns:ns1="urn:Magento" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding"> <SOAP-ENV:Body> <ns1:call> <sessionId xsi:type="xsd:string">(My Seesion ID)</sessionId> <resourcePath xsi:type="xsd:string">customer.list</resourcePath> <args SOAP-ENC:arrayType="ns2:Map[1]" xsi:type="SOAP-ENC:Array"> <item xsi:type="ns2:Map"> <item> <key xsi:type="xsd:string">email</key> <value xsi:type="xsd:string">(User Email ID)</value> </item> </item> </args> </ns1:call> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 我尝试使用此代码,但主要的是我希望根据给定的电子邮件 ID 对所有用户进行归档,就像我只想要单个用户的数据,该用户的电子邮件 ID 与我请求的电子邮件 ID 匹配,问题出在我的编码上它响应所有用户列表,因此我的请求的参数部分不符合 magento 的请求格式。我是基于 SOAP 的 Web 服务的新手,所以,如果有人知道,请给我一些解释。下面的代码是我尝试过的,我 SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); soapEnvelope.implicitTypes = true; soapEnvelope.dotNet = true; soapEnvelope.avoidExceptionForUnknownProperty=true; soapEnvelope.setAddAdornments(false); SoapObject soapReq = new SoapObject("urn:Magento", "call"); soapReq.addProperty("sessionId", sessionId); String NESTED_NAMESPACE = "http://schemas.microsoft.com/2003/10/Serialization/Arrays"; SoapObject recipients = new SoapObject(NESTED_NAMESPACE, "args"); Vector<String> recp = new Vector<String>(); recp.add("email"); recipients.addProperty("key", recp); recp = new Vector<String>(); recp.add("[email protected]"); recipients.addProperty("value", recp); soapReq.addSoapObject(recipients); soapEnvelope.setOutputSoapObject(recipients); HttpTransportSE httpTransport = new HttpTransportSE(url, timeOut); httpTransport.debug = true; try { if (headers != null) { httpTransport.call("urn:Magento/call", soapEnvelope, headers); } else { httpTransport.call("urn:Magento/call", soapEnvelope); } Object retObj = soapEnvelope.bodyIn; Object result = null; try { result = soapEnvelope.getResponse(); } catch (SoapFault soapFault) { soapFault.printStackTrace(); } 我已经解决了我的问题,我认为我的问题不值得负分。无论如何,我正在上传我的解决方案,如下所示, SoapSerializationEnvelopesoapEnvelope=newSoapSerializationEnvelope(SoapEnvelope.VER11); soapEnvelope.dotNet=true; soapEnvelope.implicitTypes=true; soapEnvelope.setAddAdornments(false); SoapObjectsoapReq=newSoapObject(NAMESPACE,"call"); soapReq.addProperty("sessionId",sessionId); soapReq.addProperty("resourcePath","customer.list"); SoapObjectnewObj=newSoapObject(); newObj.addProperty("key","email"); newObj.addProperty("value","[email protected]"); newObj.addAttribute("i:type","ns2:Map"); SoapObjectFINALoBJ=newSoapObject(); FINALoBJ.addProperty("item",newObj); SoapObjectmain_obj=newSoapObject(); main_obj.addProperty("item",FINALoBJ); main_obj.addAttribute("xmlns:ns2","http://xml.apache.org/xml-soap"); main_obj.addAttribute("i:type","c:Array"); main_obj.addAttribute("c:arrayType","ns2:Map[1]"); soapReq.addProperty("args",main_obj); soapEnvelope.setOutputSoapObject(soapReq); HttpTransportSEhttpTransport=newHttpTransportSE(url,timeOut); httpTransport.debug=true; try{ if(headers!=null){ httpTransport.call("urn:Magento/call",soapEnvelope,headers); }else{ httpTransport.call("urn:Magento/call",soapEnvelope); } ObjectretObj=soapEnvelope.bodyIn; Objectresult=null; try{ result=soapEnvelope.getResponse(); }catch(SoapFaultsoapFault){ soapFault.printStackTrace(); }
Magento API 错误:“过程‘loginParam’不存在”
我的 Magento API 调用遇到了问题。他们突然返回一个 SOAP 错误,而之前他们工作得很好。 SoapFault 异常:[SOAP-ENV:Server] 过程 'loginPar...
经过几天的持续努力,我完全不明白为什么我无法让 Soap API 用于我的 Magento 安装。 Magento 安装版本是 1.8.1 PHP 版本 5.3 我有一个脚本
通过 Magento SOAP 服务 API 获取特色产品需要哪些操作?
我正在尝试通过 Midomain.com/index.php/api/v2_soap/?wsdl 中的 WSDL 使用 SOAP v2 服务通过 Magento API 获取数据,但我不知道获取数据的确切操作 我正在努力获得“精选
我想使用 NLOG 记录肥皂 api 内部的信息。 但我发现的是如何设置 NLOG,以便外部网站调用 api,并使用 NLOG 来记录数据。 我需要看看
由于 php SoapClient 对象,我正在尝试调用 magento api 方法。 问题是创建 magentos 产品的方法可能相对较长(最多 2 分钟)。我需要得到
Magento SOAP v1 过滤器不过滤(Python Suds)
更新如下 有没有人有 Magento SOAP v1 API 的正确 XML 示例来执行以下操作? client.call(session_token,'sales_order.list', {'filters':{'
Magento Soap 错误 - 标签定义第 2 行中数据过早结束
我的客户正在使用 Unleashedsoftware.com 连接到 Magento 商店。但它给出了这个错误。 我的客户正在使用 Unleashedsoftware.com 连接到 Magento 商店。但它给出了这个错误。 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>WSDL</faultcode> <faultstring> SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://www.domain.com/index.php/api/v2_soap/index/wsdl/1/' : Premature end of data in tag definitions line 2 </faultstring> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 浏览时 http://www.domain.com/index.php/api/v2_soap/index/ Firebug 给我“500 内部服务错误”。 当我浏览 http://www.domain.com/index.php/api/v2_soap/index/wsdl/1/ 时,我得到了有效的 XML 数据。 我检查了服务器日志文件,看起来是这样的: [Thu Aug 30 22:22:25 2012] [warn] [client 92.92.92.92] mod_fcgid: stderr: in /home/doaminuser/public_html/lib/Zend/Soap/Server.php on line 762 我已经搜索了几天了,今天我尝试将整个网站复制到另一个测试服务器,它似乎有效! 所以这似乎是服务器问题。 请问有人知道可能是什么问题吗? 有没有更好的方法来调试这个问题,任何示例代码或调试技巧。 Magento 版本是 1.6.2 谢谢你。 很多时候,Magento 的 SOAP API 由于 Magento 服务器与其自身通信的问题而失败。 也就是说,PHP 的 SOAP 实现要求 SOAP 服务器本身通过 http 获取 WSDL 文件,而本地网络配置问题会妨碍 Magento 获取自己的 WSDL。 您可以通过 SSH 连接到 Magento 服务器并运行以下命令来调试此问题 curl -l 'http://www.example.com/index.php/api/v2_soap/index/wsdl/1/' > /tmp/wsdl.xml 然后检查 wsdl.xml 文件。 由于您是从网络服务器执行此操作,因此您可能会得到与从本地浏览器执行此操作时不同的结果。 我在调用URL时也遇到了类似的问题 http://www.store.com/index.php/api/v2_soap/?wsdl 一段时间后,我在 apache 错误日志中收到了消息 500 - Internal Server Error 和 Premature end of script headers 消息。 经过一整天的研究,我发现 Apache 模块的 Timeout 指令(在 Linux 环境中的 httpd.conf 中配置)设置为“20”,导致服务器在 20 秒后发送 500 错误。问题是,在我的例子中,Magento 系统需要更长的时间来“爬行”所有 wsdl.xml 文件才能构建 WSDL 输出(如果您使用的是 Magento SOAPv2)。 也许你应该检查你的超时指令..希望有帮助。 “我对此有记忆。对我有用的是将主机名 在服务器上的 /etc/hosts 中加上 127.0.0.1 上的 www 别名但是, 在本例中,服务器位于建筑物中而不是某些地方 ISP 场所和 LAN 上有 Windows 计算机。 Windows 用户有 下载了很多木马病毒色情内容,这些东西花费了 一直在网络上发送垃圾邮件,所以真正的问题在于 网络上的 Windows 计算机,不带有服务器或带有 Magento。 对 PC 进行 fdisking 后,问题就解决了。” 谢谢我在 magento 1.6 和 Windows Server 2008 上为此苦苦挣扎了 2 天,将此行添加到主机文件 (C:\Windows\System32\drivers\etc) 为我解决了这个问题: 127.0.0.1 www.Domain.com 还记得修复您的magento肥皂(角色),因为角色资源不会保存在1.6中,除非您修复此文件: MagentoRoot p
SOAP-错误:解析 WSDL:实体“复制”未定义 Magento
我尝试使用magento网络服务,但是当我尝试调用网络服务时: $proxy = new SoapClient('http://mydomain.com/magento/index.php/api/v2_soap/?wsdl'); 我收到此错误:未捕获的 SoapF...
你好,我是 magento 的新手。我有一个关于使用 SOAPProxy 登录的问题 我的代码看起来像 从 SOAPpy 导入 * 服务器 = SOAPProxy('http://localhost/magento/api/soap/?wsdl') 会话 = server.login(...
我需要使用 SOAP API 更新 magento 表中的团体价格 我尝试过做这样的事情: require_once 'app/Mage.php'; $proxy = new SoapClient('http://example.com/api/s...
Magento 中的 Soap 错误(无法打开 SoapClient.php)
我在 Magento 中遇到 SoapClient 问题,导致外部模块无法工作。 该模块正在另一个 Magento 安装上运行,所以我猜它与我的法师有关......
Magento API .Net:从订单中检索产品选项名称-值
我需要知道如何检索订单中每个产品的自定义选项(名称/值)。 例如,在我的订单中,我有 1 个“彩色蜡笔”产品。 该产品有一个自定义选项“
不能使用stdClass类型的对象作为magento数组[重复]
可能的重复: 调试 PHP SOAP 调用 这是我第一次使用soap api,我已经准备好了这个脚本,但我得到了 “无法使用 stdClass 类型的对象作为数组”错误,请电话...
我正在尝试调用 magento api 来获取特定客户的详细信息。当我执行此调用时,我总是收到以下错误: PHP 致命错误:未捕获的 SoapFault 异常:[5] Sess...
Magento SOAP API - PHP 登录方法调用引发异常:“看起来我们没有 XML 文档”
我在通过 PHP 的 SoapClient 连接到 Magento SOAP API 时遇到问题。我的开发服务器上有一个小型测试 PHP 文件设置,代码如下: 我在通过 PHP 的 SoapClient 连接到 Magento SOAP API 时遇到问题。我的开发服务器上有一个小型测试 PHP 文件设置,代码如下: <?php $soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false)); $session = $soapC->__soapCall('login', array('TestUsr', 'test123')); var_dump($session); ?> PHP 文件与我的 magento 开发版本位于同一服务器上。当我通过命令行运行 php 脚本时,$session 变量输出一个 SoapFault 对象,并显示错误“看起来我们没有 XML 文档”。 不知道如何解决这个问题。当我尝试下面的代码时,我能够打印出所有 API 方法,但由于某种原因,上面的登录方法调用导致了问题。 $soapC = new SoapClient('http://XXXX.com/api/soap/?wsdl', array('trace'=>true, 'exceptions'=>false)); print_r($soapC->__getFunctions()); 这个错误一般说明问题出在服务器端。处理请求的服务器未输出有效的 XML。检查是否没有发生错误或重定向。 如果您在浏览器中访问服务器端点会发生什么? 我意识到问题在于,当服务器尝试访问 wsdl 文件时,Magento 会向店面发出 302 重定向。 为了解决这个问题,我登录到 Magento 管理面板,导航到系统 -> 配置 -> Web,然后关闭“自动重定向到基本 URL”。现在就像一个魅力。 从远程服务器或本地服务器打开您的 php.ini 文件并将 always_populate_raw_post_data 设置为 -1。 之后您需要重新启动 Apache 服务器。 重新启动完成后,请再次运行脚本。