简体   繁体   English

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

[英]Android : create customer in magento via SOAP API

i was trying to create customer in magento via SOAP API (customerCustomerCreate (SOAP V2)) in android app , but i get this error : 我试图通过Android应用程序中的SOAP API(customerCustomerCreate(SOAP V2))在magento中创建客户,但我收到此错误:

SoapFault - faultcode: '100' faultstring: 'Customer email is required' faultactor: 'null' detail: null SoapFault - faultcode:'100'faultstring:'需要客户电子邮件'faultactor:'null'详细信息:null

i set email address with this code : 我使用以下代码设置电子邮件地址:

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

Does anyone have any idea what is the wrong I am doing here? 有谁知道我在这里做错了什么? thanks 谢谢

if you dose not get the answer till you can use this.. 如果你没有得到答案,直到你可以使用它..

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----------- --------- CreateCustomerKVMserialize类-----------

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

}

Use the code below: 使用以下代码:

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

where env is SoapSerializationEnvelope . 其中envSoapSerializationEnvelope

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM