当前位置: 首页 > 知识库问答 >
问题:

Android:通过SOAP API在magento中创建客户

甄成弘
2023-03-14

我试图通过android应用程序中的SOAP API(CusterCustomerCreate(SOAP V2))在magento中创建客户,但我得到了这个错误:

SoapFault-faultcode:“100”faultstring:“需要客户电子邮件”faultactor:“null”详细信息:null

我使用此代码设置电子邮件地址:

 request = new SoapObject(NAMESPACE, "customerCustomerCreate");
        request.addProperty("sessionId", sessionId);

        SoapObject value = new SoapObject(NAMESPACE, "associativeEntity");
        value.addProperty("key", "in");
        value.addProperty("value", "xxxxx@xxxxx.com");

        SoapObject complexFilter = new SoapObject(NAMESPACE,
                "complexFilter");
        complexFilter.addProperty("key", "email");
        complexFilter.addProperty("value", value);
                    SoapObject filterArray = new SoapObject(NAMESPACE,
                "complexFilterArray");
        filterArray.addProperty("item", complexFilter);

        SoapObject filters = new SoapObject(NAMESPACE, "filters");
        filters.addProperty("complex_filter", filterArray);

        request.addProperty("filters", filters);

        env.setOutputSoapObject(request);

        androidHttpTransport.call("", env);
        result = env.getResponse();

有人知道我在这里做错了什么吗?谢谢

共有2个答案

容宏逸
2023-03-14

使用以下代码:

 SoapObject request = new SoapObject(NAMESPACE, "customerCustomerCreate");
                    request.addProperty("sessionId", sessionId);

                    SoapObject customerEntity = new SoapObject(NAMESPACE, "customerCustomerEntityToCreate");


                    customerEntity.addProperty("email", "abqpo@120.com");
                    customerEntity.addProperty("firstname", "firstname");
                    customerEntity.addProperty("lastname", "lastname");

                    request.addProperty("customerData", customerEntity);


                    env.setOutputSoapObject(request);

                    androidHttpTransport.call("", env);
                    Object result = env.getResponse();
                    String custId  = result.toString();

其中env是SoapSerializationEnvelope。

汪翰墨
2023-03-14

如果你没有得到答案,直到你可以使用这个。。

public void CreateNewCustomer(String email, String firstname, String lastname, String password) {


            try {
                env.dotNet = false;
                env.xsd = SoapSerializationEnvelope.XSD;
                env.enc = SoapSerializationEnvelope.ENC;
                request = new SoapObject(NAMESPACE, "login");
                request.addProperty("username", "+++++");
                request.addProperty("apiKey", "+++++");
                env.setOutputSoapObject(request);

               public static HttpTransportSE androidHttpTransport = new HttpTransportSE(URL)
                androidHttpTransport.call("", env);
                session = env.getResponse();
                sessionId = session.toString();

                Log.d("sessionId", sessionId.toString()); 

                Log.d("Create "," Creating......");
                request = new SoapObject(NAMESPACE,"customerCustomerCreate");
                request.addProperty("sessionId", sessionId);
//              request.addProperty("product", product_id);

                //-----use Kvm Serializable class to serialize the key value data-------

                CreateCustomerKVMserialize createcustomerkvm = new CreateCustomerKVMserialize();

                createcustomerkvm.Email = email;
                createcustomerkvm.Firstname = firstname;
                createcustomerkvm.Lastname = lastname;
                createcustomerkvm.Password = password;

                PropertyInfo pi = new PropertyInfo();
                pi.setName("customerData");
                pi.setValue(createcustomerkvm);
                pi.setType(createcustomerkvm.getClass());
                request.addProperty(pi);

                env.setOutputSoapObject(request);
                env.addMapping(NAMESPACE, "customerData",new CreateCustomerKVMserialize().getClass());

                androidHttpTransport.call("", env);
                Object customer_create = env.getResponse();
                Log.d("mainactivity "," "+customer_create.toString());


            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

    }       

---------CreateCustomerKVM序列化类-----------

public class CreateCustomerKVMserialize implements KvmSerializable{

    public String Email;
    public String Firstname;
    public String Lastname;
    public String Password;
//    public String Websiteid;
//    public String Storeid;
//    public String Groupid;

    public CreateCustomerKVMserialize(){}

    public CreateCustomerKVMserialize(String email, String firstname, String lastname,String password) {

        Email = email;
        Firstname = firstname;
        Lastname = lastname;
        Password = password;
    }

    @Override
    public Object getProperty(int arg0) {
        // TODO Auto-generated method stub
         switch(arg0)
            {
            case 0:
                return Email;
            case 1:
                return Firstname;
            case 2:
                return Lastname;
            case 3:
                return Password;    

            }

            return null;

    }

    @Override
    public int getPropertyCount() {
        // TODO Auto-generated method stub
        return 4;
    }

    @Override
    public void getPropertyInfo(int index, Hashtable arg1, PropertyInfo info) {
        // TODO Auto-generated method stub

         switch(index)
            {
            case 0:
                info.type = PropertyInfo.STRING_CLASS;
                info.name = "email";
                break;
            case 1:
                info.type = PropertyInfo.STRING_CLASS;
                info.name = "firstname";
                break;
            case 2:
                 info.type = PropertyInfo.STRING_CLASS;
                 info.name = "lastname";
                break;
            case 3:
                 info.type = PropertyInfo.STRING_CLASS;
                 info.name = "password";
                break;
            default:break;
            }
    }

    @Override
    public void setProperty(int index, Object value) {
        // TODO Auto-generated method stub

        switch(index)
        {
        case 0:
            Email = value.toString();
            break;
        case 1:
            Firstname = value.toString();
            break;
        case 2:
            Lastname = value.toString();
            break;
        case 3:
            Password = value.toString();
            break;

        default:
            break;
        }
    }

}
 类似资料:
  • 问题内容: 我想知道是否可以使用其API在Jenkins中创建新用户。我可以创建作业,但Jenkins的API文档与用户创建没有任何关系。 实际上,我必须先创建一个新用户,然后为该用户创建一个新作业,所有这些工作均使用API​​。 问题答案: 没错,没有用于添加用户的显式CLI命令。但是您可以为此使用groovy脚本(使用CLI执行)。 详细信息取决于您的Jenkins的配置方式。例如,如果您的J

  • 问题内容: 美好的一天! 我想使用Magento的SOAP API来管理产品目录,属性等。我正在运行以下配置:- Magento 1.6 肥皂API WS-I符合性 Mac OSX狮子 模板2.0.5 如果有人要创建新产品,则必须设置产品对象的一些属性。以下代码将演示我执行此操作的方法: 我意识到我将错误写入Magento 的“ ”。 我可以在第265行的文件中定位错误。根据php.net文档,“

  • 我正在通过Magento API开发一个流程支付,遇到了一个问题: 我创建了一个购物车,添加/更新/删除产品,添加了运输方法,所有这些都是通过Magento API完成的,它们都运行得很好。 如果我使用的付款方式像CC Save(代码:)、支票/汇款单(代码:),我会为购物车创建一个订单。 但如果我使用Paypal Pro作为支付方法,我在步骤创建订单时出现错误 (api:cart.order):

  • 这是在一个单独的类中(不是或)。上面的工作很好,我可以看到我的MakeADialg日志消息。然而,当我试图创建一个实际的对话框,然后我得到很多崩溃。当我从C端调用到Java端时,我可以看出我并不是在摸索我在运行什么‘线程’。当我试图创建一个新的线程/对话框时,似乎遇到了麻烦。 我已经尝试了很多关于创建Runnable线程等的建议--但它们似乎总是给我一个可怕的‘无法在未调用looper.prepa

  • 问题内容: 我需要一个Java类来提交BMC Remedy的帮助台产品的票证。 想知道是否有人已经这样做,并愿意分享代码或经验。 问题答案: 杰夫, 请看下面。这将以v7的HPD:Help Desk形式创建一个简单的凭单。希望这可以帮助。 -杰森

  • 本文向大家介绍magento 通过SKU获取产品,包括了magento 通过SKU获取产品的使用技巧和注意事项,需要的朋友参考一下 示例