【问题标题】:How to call "cart_payment.method" API of magento using XMLRPC in Android如何在Android中使用XMLRPC调用magento的“cart_payment.method”API
【发布时间】:2012-10-25 07:14:05
【问题描述】:

我尝试了许多不同的方法来使用XMLRPC 调用Magento 的“cart_paymant.methodAPI,但总是失败。

下面是我用来调用它的代码。

Map<String,String> map = new HashMap<String,String>();
map.put("method","checkmo");
//map.put("po_number",null);
//map.put("cc_cid", null);
//map.put("cc_owner",null);
//map.put("cc_number",null);
//map.put("cc_type",null);
//map.put("cc_exp_year",null);
//map.put("cc_exp_month",null);


Object[] paymentMethod=new Object [] {map};
Object param1[]=new Object[]{shoppingCartId,paymentMethod};
Object param2[]=new Object[]{Utils.sessionId,"cart_payment.method",param1};   

try 
{
  Boolean ans=(Boolean)client.callEx("call", param2);
  Log.i("Payment Method Setting : ", ""+ans);
}  
catch (XMLRPCException e) {
  e.printStackTrace();
  return 0;
}  

我得到的异常:

java.io.IOException: Cannot serialize null
at org.cws.magentoAnd.xmlrpc.XMLRPCSerializer.serialize(XMLRPCSerializer.java:99)
at org.cws.magentoAnd.xmlrpc.XMLRPCSerializer.serialize(XMLRPCSerializer.java:89)
at org.cws.magentoAnd.xmlrpc.XMLRPCSerializer.serialize(XMLRPCSerializer.java:72)
at org.cws.magentoAnd.xmlrpc.XMLRPCSerializer.serialize(XMLRPCSerializer.java:72)
at org.cws.magentoAnd.xmlrpc.XMLRPCCommon.serializeParams(XMLRPCCommon.java:36)
at org.cws.magentoAnd.xmlrpc.XMLRPCClient.methodCall(XMLRPCClient.java:253)
at org.cws.magentoAnd.xmlrpc.XMLRPCClient.callEx(XMLRPCClient.java:174)

仅供参考,我还将在 Web 上发布调用该 API 的 php 代码。

$paymentMethod = array(
    “method” => “checkmo”
);

$resultPaymentMethod = $proxy->call(
    $sessionId,
    “cart_payment.method”,
    array(
        $shoppingCartId,
        $paymentMethod
    )
);

【问题讨论】:

  • shoppingCartId 初始化了吗?
  • @BryanGlazer :是的,实际上这是一个全局变量。我已经提前检查过没有一个变量为空。

标签: java android magento xml-rpc


【解决方案1】:

我从登录中获得了sessionId,但是当我调用一个方法(例如:catalog_category.info)时,它会抛出异常:

XMLRPC 错误:调用参数与签名不匹配。

这是我的代码:

new AsyncTask<Void, Void, Void>() {
   @Override
   protected Void doInBackground(Void... params) {
      uri = URI.create("http://gameshay.net/magento/index.php/api/xmlrpc/");
      client = new XMLRPCClient(uri);
      String sessionId = "";
      try {
         sessionId = (String)client.call("login", "mdev", "socbay123");
         Log.d("MY_XMLRPC_SUCCESS_SESSION_ID", sessionId);
         @SuppressWarnings("unchecked")
         final Map<String, Object> category = (Map<String, Object>) client.call("call" Object[]{sessionId, "catalog_category.info","5"});
      }
      catch (XMLRPCException e) {
         Log.d("MY_XMLRPCException_MSG", e.getMessage());
      }
      return null;
   }
}.execute();

【讨论】:

  • 该错误意味着您没有以正确的方式传递参数或者可能是正确的顺序。
猜你喜欢
  • 2015-02-24
  • 2010-11-23
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 2012-08-18
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
相关资源
最近更新 更多