SoapFault - faultcode: '1062' faultstring: '运输方式不可用'

Posted

技术标签:

【中文标题】SoapFault - faultcode: \'1062\' faultstring: \'运输方式不可用\'【英文标题】:SoapFault - faultcode: '1062' faultstring: 'Shipping method is not available'SoapFault - faultcode: '1062' faultstring: '运输方式不可用' 【发布时间】:2015-10-26 07:36:53 【问题描述】:

您好,我正在开发一个使用 Magento 作为后端的 android 应用程序,我正在使用 magento 的 SOAP webervice,我已将所有产品、客户和客户地址信息添加到购物车中,但是当我尝试添加运输方式时到购物车,我收到此错误


SoapFault - faultcode: '1062' faultstring: '运输方式不可用'

这是我正在尝试的代码,请帮我解决这个问题

SoapObject availableShippingMethods = new SoapObject(MAGENTO_NAMESPACE, "shoppingCartShippingList");
availableShippingMethods.addProperty("sessionId", sessionId);
availableShippingMethods.addProperty("quoteId", quoteId);
env.setOutputSoapObject(availableShippingMethods);
androidHttpTransport.call("", env);
Object resultForAvailableShippingMethods = env.getResponse();
Log.d("AvailableShippingMethods",resultForAvailableShippingMethods.toString());

这会给我们这个输出


D/AvailableShippingMethods﹕shoppingCartShippingMethodEntityArrayitem=shoppingCartShippingMethodEntitycode=flatrate_error;承运人=平价; carrier_title=统一费率;价格=0; ;

以下是将 Shipping 方法设置为 CartId 的代码

 SoapObject shippingmethod = new SoapObject(MAGENTO_NAMESPACE, "shoppingCartShippingMethod");
 shippingmethod.addProperty("sessionId", sessionId);
 shippingmethod.addProperty("quoteId", quoteId);
 shippingmethod.addProperty("shippingMethod", "flatrate_error");//Code for Flatrate shipping method and it is enabled in magento site
 env.setOutputSoapObject(shippingmethod);
 androidHttpTransport.call("", env);
 Log.d("shippingMethod", shippingmethod.toString());
 Object resultforShippingMethod = env.getResponse();
 Log.d("ShippingMethod", resultforShippingMethod.toString());

【问题讨论】:

你可以使用soupUI工具测试你的网络服务 检查你的webservice方法名和传递的方法名是否相同 我已经检索了可用运输方式的列表,并给出了确切的运输方式名称,但我仍然没有得到 你解决了这个问题吗?请让我知道如何... 【参考方案1】:

我知道现在回答为时已晚......但它可能会在未来帮助某人......

问题出在 magento soap v2 的文档中...当我浏览 wsdl 链接时,我注意到以下内容...

<message name="shoppingCartShippingMethodRequest">
<part name="sessionId" type="xsd:string"/>
<part name="quoteId" type="xsd:int"/>
<part name="method" type="xsd:string"/>
<part name="storeId" type="xsd:string"/>
</message>

如您所见,有属性方法。实际上,我们必须添加运输方式...... 所以你必须改变你的代码如下......

SoapObject shippingmethod = new SoapObject(MAGENTO_NAMESPACE,"shoppingCartShippingMethod");
shippingmethod.addProperty("sessionId", sessionId);
shippingmethod.addProperty("quoteId", quoteId);
shippingmethod.addProperty("method", "flatrate_error");
env.setOutputSoapObject(shippingmethod);
androidHttpTransport.call("", env);
Log.d("shippingMethod", shippingmethod.toString());
Object resultforShippingMethod = env.getResponse();
Log.d("ShippingMethod", resultforShippingMethod.toString());

【讨论】:

,先生,无论何时,您的回答都很有价值,谢谢您的回答,+10 回答【参考方案2】:

可能是因为国家/地区 ID 错误。输入正确信息后,我得到了两种运输方式(freeshipping_freeshippingflatrate_flatrate)。

【讨论】:

但我们没有在此处输入任何国家/地区 ID【参考方案3】:

在设置送货方式之前,您需要先设置客户地址,在客户地址中您需要输入国家/地区 ID。

【讨论】:

是的,我已经这样做了,我已经为印度输入了“IN”..但仍然遇到同样的错误, 那请检查您是否输入了地址id?以前我使用“flatrate_error”获取代码,但现在我得到了 2 种运输方式,即一种是 freeshipping_freeshipping 和另一种作为 flatrate_flatrate。我也在前端。 我使用的是 SOAP V2 版本,但是在将客户地址信息添加到购物车时会抛出一些故障代码错误 在将客户地址信息添加到购物车时收到什么错误代码? address_id 是强制性的,您可以通过调用“customerAddressList”方法获取它。出于测试目的,我们在 magento 管理面板中保留了统一费率和免费送货方式,因此在调用“shoppingCartShippingList”方法时我们得到了两种送货方式!

以上是关于SoapFault - faultcode: '1062' faultstring: '运输方式不可用'的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用KSOAP2调用WebService

未捕获的 SoapFault 异常:HTTP 请求实体太大

SoapFault:元素 http://schemas.xmlsoap.org/soap/envelope/:Body 上没有 id 属性(代码 wsse:InvalidSecurity)

为啥在某些情况下会加密 WCF SoapFault 响应?

PHP / SOAP未捕获SoapFault异常:调用未定义的方法

RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend"