A7madev
A7madev

Reputation: 728

Passing ArrayList to PHP using Android Asynchronous Http Client Issue

Im trying to send ArrayList to PHP ($_POST) and use it as an array. I use Android Asynchronous Http Client http://loopj.com/android-async-http/

My code

ArrayList<String> array = new ArrayList<String>();
array.add("1");
array.add("2");
array.add("3");
RequestParams params = new RequestParams();
params.put("descr_array", array );
AsyncHttpClient client = new AsyncHttpClient();
client.post(StaticValues.SERVER_PAGE, params, new AsyncHttpResponseHandler() { ... }

In PHP

$descrarray[] = $_POST['descr_array'];

shows only one item, as a string.

$result = print_r($_POST);
print(json_encode($result));

Debugging code shows

Array ( [descr_array] => 1 )

There is only one string, how can I solve it?

Upvotes: 3

Views: 3178

Answers (3)

Veeru
Veeru

Reputation: 4936

This worked for me...

Map<String, String> aMap = new HashMap<String, String>();
aMap.put("f_name" ,"");
aMap.put("l_name" ,"");
aMap.put("email" ,edtEmail.getText().toString());
RequestParams params = new RequestParams();
params.put("user",aMap);

AsyncHttpClient client = new AsyncHttpClient();
client.post(url, params, n.....

Upvotes: 0

Sheharyar
Sheharyar

Reputation: 75820

This is what worked for me:

RequestParams params = new RequestParams();

for (String val : array) {
    params.add("descr_array[]", val);
}

It doesn't require you to add extra Headers or import other libraries and works for both JSON and XML.


The important thing to note here is the use of add instead of put. See the difference between the two.

Upvotes: 0

Maxim Shoustin
Maxim Shoustin

Reputation: 77910

If you want to get all values write:

RequestParams params = new RequestParams();
params.put("descr_array_1", array.get(0) );
params.put("descr_array_2", array.get(1) );
params.put("descr_array_2", array.get(2) );

But I prefer you to use Gson to convert Array to String and use one pair only:

Gson gson = new Gson(); 
String out = gson.toJson(array);
params.put("descr_array", out ); 

Upvotes: 3

Related Questions