2012-02-02 6 views
5

Tôi muốn gửi một mảng php qua POST từ Android đến máy chủ php và tôi có mã nàygửi mảng php với POST android

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

Tôi nghĩ rằng mảng php có thể có thể đi trong StringEntity dades = new StringEntity(data); (dữ liệu là mảng php). Ai giúp tôi với?

+0

Tôi thường làm theo cách này http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient – jsaye

+0

@jsaye: đủ điều kiện làm câu trả lời, đặt mã, một số giải thích liên kết xuống để có được một số đại diện – konsolenfreddy

+0

@ konsolenfreddy: cảm ơn lời khuyên của bạn, tôi thực sự mới ở đây và đôi khi tôi không biết phải làm gì – jsaye

Trả lời

6
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 
}} 

Đoạn mã trên sẽ gửi một mảng như thế này: [id=12345, stringdata=AndDev is Cool!]

Nếu bạn muốn có một mảng bidimentional bạn nên làm điều này

Bundle b= new Bundle(); 
b.putString("id", "12345"); 
b.putString("stringdata", "Android is Cool"); 
nameValuePairs.add(new BasicNameValuePair("info", b.toString())); 

này sẽ tạo ra một mảng chứa một mảng:

[info=Bundle[{id=12345, stringdata=Android is Cool}]] 

Tôi hy vọng đây là những gì bạn muốn.

+0

nhưng tôi muốn gửi mảng giá thầu ... –

+3

http://www.coderanch.com/t/533566/Android/Mobile/sending-array-namevaluepairs-http-post đây là giải pháp !! –

9

Bạn có thể làm một cái gì đó như thế này:

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

nơi màu sắc là thẻ mảng của bạn. Chỉ cần sử dụng [] sau thẻ mảng của bạn và đặt giá trị. Ví dụ. nếu tên thẻ mảng của bạn là colour thì hãy sử dụng tên đó như colour[] và đặt giá trị vào vòng lặp.

+1

tôi đã có 5 Arraylist id, tên, địa chỉ vv sau đó làm thế nào tôi có thể thêm tất cả các giá trị này trong sigle List hoặc mảng? – PankajAndroid