Я хочу отправить php-массив через POST с android на php-сервер, и у меня есть этот код
HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); StringEntity dades = new StringEntity(data); httppost.setEntity(dades); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); HttpEntity resEntity = response.getEntity(); return resEntity.getContent();
Я думаю, что php-массив может быть в StringEntity dades = new StringEntity(data);
(данные – это php-массив). Может кто-нибудь мне помочь?
public void postData() { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php"); try { // Add your data //you can add all the parameters your php needs in the BasicNameValuePair. //The first parameter refers to the name in the php field for example // $id=$_POST['id']; the second parameter is the value. List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); nameValuePairs.add(new BasicNameValuePair("id", "12345")); nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!")); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); } catch (ClientProtocolException e) { // TODO Auto-generated catch block } catch (IOException e) { // TODO Auto-generated catch block }}
Приведенный выше код отправит такой массив: [id=12345, stringdata=AndDev is Cool!]
Если вы хотите двумерный массив, вы должны сделать это
Bundle b= new Bundle(); b.putString("id", "12345"); b.putString("stringdata", "Android is Cool"); nameValuePairs.add(new BasicNameValuePair("info", b.toString()));
Это создаст массив, содержащий массив:
[info=Bundle[{id=12345, stringdata=Android is Cool}]]
Надеюсь, это то, что вы хотите.
Вы можете сделать что-то вроде этого:
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("colours[]","red")); nameValuePairs.add(new BasicNameValuePair("colours[]","white")); nameValuePairs.add(new BasicNameValuePair("colours[]","black")); nameValuePairs.add(new BasicNameValuePair("colours[]","brown"));
где цвет – ваш тег массива. Просто пользователь []
после тэга массива и значения значения. Например. если имя тега массива – это colour
то используйте его как colour[]
и поместите значение в цикл.