Use this method ... i am going with it and its working fantastic for me and i also use it for update also...
public class MainActivity extends Activity implements OnClickListener
{
Button click;
HttpTransportSE androidHttpTransport;
SoapObject request ;
SoapSerializationEnvelope env = new SoapSerializationEnvelope(SoapEnvelope.VER11);
ArrayList<HashMap<String, String>> arrayList = new ArrayList<HashMap<String, String>>();
private static final String NAMESPACE = "urn:Magento";
// private static final String URL =
// "website/api/v2_soap/?wsdl";
private static final String URL = "website/index.php/api/v2_soap/index/";
private static final String SOAP_ACTION = "urn:Mage_Api_Model_Server_V2_HandlerAction";
@Override
protected void onCreate(Bundle savedInstanceState) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
click=(Button)findViewById(R.id.button1);
click.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
String email = "[email protected]";
String firstname= "name";
String lastname= "surname";
String password= "password";
CreateNewCustomer(email, firstname, lastname, password);
}
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", "abcd");
request.addProperty("apiKey", "abcd");
env.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
androidHttpTransport.call("", env);
Object session = env.getResponse();
String 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();
}
}
}
create class which implements KvmSerializable
public class CreateCustomerKVMserialize implements KvmSerializable{
public String Email;
public String Firstname;
public String Lastname;
public String Password;
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;
}
}
}
and i am using soap version 2 and if u want to download lib. then click here