[英]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 . 其中env是SoapSerializationEnvelope 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.