2011-03-12 83 views
1

我作为一名PHP开发人员(中级)工作,并在家中练习一些安卓系统的东西。将Android ArrayList的内容发送到PHP

我已经创建和数组列表,它将获取到我的Android应用程序中的sqlite数据库并填充ListView。现在我正试图进一步提高这个水平。

我想将该数组列表内容发送到我的PHP服务器,我可以将给定的数据存储到mysql中并将数据提取回我的应用程序。

我该如何去做到这一点?

回答

1

您可以使用JSON或XML从Android发送数据到php服务器。 在PHP方面,您所需要的只是内置的json_decode,它将反序列化您的json并返回一个对象或关联数组。

+1

正是我要说的话。我发现Android OS中包含的JSON或XML支持非常好,要么会为你工作,并允许沟通。请记住,您需要获得访问ApplicationManifest.xml中的网络操作的权限,并且您需要通过默认的http对象发送JSON或XML。 – 2011-03-12 07:06:17

1

为此,您必须在php服务器上发布数据,然后获取该数据并存储到数据库中。

在这里我附上一个例子,它发送服务器上的数据并获得响应在json中。

    HttpPost postMethod = new HttpPost("Your Url"); 
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 


        // test is a one array list 

        for(int i=0;i<test.size();i++) 
        { 
         nameValuePairs.add(new BasicNameValuePair("sample[]", Integer.toString(test.get(i)))); 
        } 

        postMethod.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
        DefaultHttpClient hc = new DefaultHttpClient(); 

        HttpResponse response = hc.execute(postMethod); 
        HttpEntity entity = response.getEntity(); 

        // If the response does not enclose an entity, there is no need 
        // to worry about connection release 

        if (entity != null) 
        { 
         InputStream inStream = entity.getContent(); 
         result= convertStreamToString(inStream); 
         jsonObject = new JSONObject(result); 
         responseHandler.sendEmptyMessage(0); 
        } 
       } 
       catch(Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     }.start(); 

这里样品[]是其中i的分配数组值上的服务器发送的字段。从服务器端您必须获取示例[]字段。


public static String convertStreamToString(InputStream is) 
{ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
    StringBuilder sb = new StringBuilder(); 

    String line = null; 
    try 
    { 
     while ((line = reader.readLine()) != null) 
     { 
      sb.append(line + "\n"); 
     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try 
     { 
      is.close(); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 

}

+0

我有多个arraylist,那么我怎么能在列表这个所有值? – PankajAndroid 2013-11-18 05:39:22