soap 相关问题

简单对象访问协议(SOAP)是用于在Web服务的实现中交换结构化信息的协议规范。

获取 SoapFault - 故障代码:'SOAP-ENV:服务器' 故障字符串:'过程'登录'不存在' 故障因素:'空'详细信息:空错误

我想在android代码中调用Magento Soap v2 API方法。为此,我需要根据此http://www.magentocommerce.com/api/soap/catalog/catalogCategory/catalog_category.tree.html的session_id 我

回答 1 投票 0

定义和使用 codeigniter 控制器的全局对象

您好,我正在使用 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); } } ?>

回答 1 投票 0

致命错误:未捕获的 SoapFault 异常:[Client] 函数(“调用”)

我正在使用 SOAP API 在 Magento 中使用其 SKU 打印产品信息。代码在本地服务器上运行良好,但在实时服务器上引发致命错误致命错误:未捕获的 SoapFault 除外...

回答 1 投票 0

Magento 1.9.1.0:无法使用soap cleint加载WSDL

我已经尝试了以下线程中给出的所有答案。 [1] Magento SOAP API - PHP 登录方法调用引发异常:“看起来我们没有 XML 文档” [2] Magento SOAP API ...

回答 1 投票 0

android中的ksoap请求格式?

我有基于 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(); }

回答 1 投票 0

Magento API 错误:“过程‘loginParam’不存在”

我的 Magento API 调用遇到了问题。他们突然返回一个 SOAP 错误,而之前他们工作得很好。 SoapFault 异常:[SOAP-ENV:Server] 过程 'loginPar...

回答 2 投票 0

无法让 Soap API 用于 Magento 安装

经过几天的持续努力,我完全不明白为什么我无法让 Soap API 用于我的 Magento 安装。 Magento 安装版本是 1.8.1 PHP 版本 5.3 我有一个脚本

回答 1 投票 0

通过 Magento SOAP 服务 API 获取特色产品需要哪些操作?

我正在尝试通过 Midomain.com/index.php/api/v2_soap/?wsdl 中的 WSDL 使用 SOAP v2 服务通过 Magento API 获取数据,但我不知道获取数据的确切操作 我正在努力获得“精选

回答 1 投票 0

在 Soap Api 中记录

我想使用 NLOG 记录肥皂 api 内部的信息。 但我发现的是如何设置 NLOG,以便外部网站调用 api,并使用 NLOG 来记录数据。 我需要看看

回答 1 投票 0

长 Soap 调用未获得返回值

由于 php SoapClient 对象,我正在尝试调用 magento api 方法。 问题是创建 magentos 产品的方法可能相对较长(最多 2 分钟)。我需要得到

回答 1 投票 0

Magento SOAP v1 过滤器不过滤(Python Suds)

更新如下 有没有人有 Magento SOAP v1 API 的正确 XML 示例来执行以下操作? client.call(session_token,'sales_order.list', {'filters':{'

回答 4 投票 0

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

回答 3 投票 0

SOAP-错误:解析 WSDL:实体“复制”未定义 Magento

我尝试使用magento网络服务,但是当我尝试调用网络服务时: $proxy = new SoapClient('http://mydomain.com/magento/index.php/api/v2_soap/?wsdl'); 我收到此错误:未捕获的 SoapF...

回答 1 投票 0

在Python中使用SOAPpy登录magento

你好,我是 magento 的新手。我有一个关于使用 SOAPProxy 登录的问题 我的代码看起来像 从 SOAPpy 导入 * 服务器 = SOAPProxy('http://localhost/magento/api/soap/?wsdl') 会话 = server.login(...

回答 1 投票 0

如何通过 SOAP api 更新团体价格

我需要使用 SOAP API 更新 magento 表中的团体价格 我尝试过做这样的事情: require_once 'app/Mage.php'; $proxy = new SoapClient('http://example.com/api/s...

回答 2 投票 0

Magento 中的 Soap 错误(无法打开 SoapClient.php)

我在 Magento 中遇到 SoapClient 问题,导致外部模块无法工作。 该模块正在另一个 Magento 安装上运行,所以我猜它与我的法师有关......

回答 2 投票 0

Magento API .Net:从订单中检索产品选项名称-值

我需要知道如何检索订单中每个产品的自定义选项(名称/值)。 例如,在我的订单中,我有 1 个“彩色蜡笔”产品。 该产品有一个自定义选项“

回答 1 投票 0

不能使用stdClass类型的对象作为magento数组[重复]

可能的重复: 调试 PHP SOAP 调用 这是我第一次使用soap api,我已经准备好了这个脚本,但我得到了 “无法使用 stdClass 类型的对象作为数组”错误,请电话...

回答 1 投票 0

对 Magento Soap API 的调用立即过期

我正在尝试调用 magento api 来获取特定客户的详细信息。当我执行此调用时,我总是收到以下错误: PHP 致命错误:未捕获的 SoapFault 异常:[5] Sess...

回答 2 投票 0

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 服务器。 重新启动完成后,请再次运行脚本。

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.