отправка php массива с помощью POST android - PullRequest
5 голосов
/ 02 февраля 2012

Я хочу отправить массив 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). Кто-нибудь может мне помочь?

Ответы [ 2 ]

11 голосов
/ 06 февраля 2013

Вы можете сделать что-то вроде этого:

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

где color - ваш тег массива.Просто используйте [] после тега массива и введите значение.Например.если ваше имя тега массива colour, используйте его как colour[] и поместите значение в цикл.

7 голосов
/ 03 февраля 2012
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}]]

Надеюсь, это то, что вы хотите.

...