如何从android发送数据到PHP服务器

时间:2013-12-11 07:00:05

标签: php android web-services

我刚接触到android,正在开发反馈类型的android应用程序我在本地使用实体类存储所有数据,现在我需要使用php url将此数据发送到服务器,所以你能帮我,我怎么能发布我的服务器上的数据。

3 个答案:

答案 0 :(得分:3)

您可以使用以下代码

 public class UploadData extends AsyncTask<String, Void, AppState> {

    private static int[] number=new int[100];
    private static int count=0;
    String edit_id2;
    private int numItems=0;

    @Override
    protected void onPostExecute(AppState result) {
        UserdataList data= new UserdataList() ;
    };
    @Override
    protected AppState doInBackground(String... params) {

        List<NameValuePair> nameValuePairs;
        UserdataList data= new UserdataList() ;
        try
        {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://your serverlink/foldername/filename.php");


            nameValuePairs = new ArrayList<NameValuePair>(50);
            numItems = data.getDataList().size();

            for(int i=0; i<numItems ;i++) 
            {
                if(data.getDataList().get(i).transfered){
                    continue;
                } else
                if(!data.getDataList().get(i).transfered)
                {   
                    nameValuePairs.add(new BasicNameValuePair("address", data.getDataList().get(i).address));

                    nameValuePairs.add(new BasicNameValuePair("store", "Kosmo"));

                    nameValuePairs.add(new BasicNameValuePair("appearance", data.getDataList().get(i).appearance));

                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_16));

                    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(
                            nameValuePairs);

                    httppost.setEntity(formEntity);

                    HttpResponse response = httpclient.execute(httppost);
                    HttpEntity entity = response.getEntity();
                    int status = response.getStatusLine().getStatusCode();

                    if(status == 200){
                        System.out.println("ResponseCode of record: "+ i + " is " + status);
                        data.getDataList().get(i).transfered=true;
                        System.out.println("Transfered");
                        nameValuePairs.clear();
                    } else {
                        System.out.println(" NOT Transfered");
                    data.getDataList().get(i).transfered=false;
                    }
                }
            }
                data.reInitializeList();
                data.getDataList().clear();

            }catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
            }   
        return data.getUserdata();
    }
 }

并在Appstate类中创建Appstate类创建构造函数并定义要在数据库中传递的所有变量字段...

public class AppState implements Serializable{


public String appointment="", address="", mannerism="", consultation="", treatment="",advice="", appearance="", billing="", waiting="",experience="",suggestions="";
public String pname="", formatted,phone=" ";

    AppState userdata;
    boolean transfered;


    AppState(){


        this.address=" ";
        this.appearance="";
        this.suggestions="";
        this.appointment=" ";
        this.mannerism=" ";
        this.experience="";
        this.consultation=" ";
        this.treatment=" ";
        this.advice=" ";
        this.billing=" ";
        this.waiting=" ";
        this.pname=" ";
        this.phone =" ";

        this.formatted=" ";

    }
}

使用您的数据库文件更改appstate字段

public class UserdataList {

private static List<AppState> userDataList;
private static AppState userdata;

public AppState getUserdata() {
    if (null == userdata) {
        userdata = new AppState();
    }
    return userdata;
}

public List<AppState> getDataList() {

    if (null == userDataList) {
        userDataList = new ArrayList<AppState>();
    }
    return userDataList;
}
public void addDataToList(AppState data) {
    if (null == userDataList) {
        userDataList = new ArrayList<AppState>();

    }
    userDataList.add(data);
    userdata = null;
}

public void reInitializeList() {
    userDataList.clear();
}

public void sendData() {
     new UploadData().execute(" ");
    userdata = null;
}

public UserdataList() {
    getUserdata();
}
}

注意:sdk 23不再支持DefaultHttpClient,因此建议使用带有此代码的目标sdk 21。

答案 1 :(得分:0)

您可以使用httppost类来帮助您 您可以参考以下网址来帮助您

http://www.androidsnippets.com/executing-a-http-post-request-with-httpclient

答案 2 :(得分:0)

Http-Request库可以帮助你很多,让你的编程生活更轻松;)阅读简短指南并使用它:)