Android : create customer in magento via SOAP API



我试图通过Android应用程序中的SOAP API(customerCustomerCreate(SOAP V2))在magento中创建客户,但是我收到此错误:

肥皂故障 - 错误代码:"100" 错误字符串:"需要客户电子邮件" 错误执行者:"空" 详细信息:空

我用这个代码设置了电子邮件地址:

 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();

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

如果你在你可以使用它之前没有得到答案。

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();
            }
    }       

---------CreateCustomerKVMserialize class-----------

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;
        }
    }
}

使用以下代码:

 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();

其中 envSoapSerializationEnvelope

最新更新