【问题标题】:How to send data to PHP server from android [duplicate]如何从android向PHP服务器发送数据[重复]
【发布时间】:2013-12-11 07:00:04
【问题描述】:

我是 android 新手,正在开发反馈类型的 android 应用程序,我使用实体类在本地存储所有数据,现在我需要使用 php url 将此数据发送到服务器,所以请你帮我如何发布我的服务器上的数据。

【问题讨论】:

标签: php android web-services


【解决方案1】:

你可以使用下面的代码

 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。

【讨论】:

  • 我对 android 很陌生,你能告诉我如何创建 AppState 类以及如何创建一个构造函数..
  • 你能告诉我如何创建 UserdataList
  • @RaghuKaligipula 我已经更新了我的答案...请检查一下,如果您有任何疑问,请随时问我。很高兴为您提供帮助。
  • 感谢您的代码,但在公共类 UserdataList 中,它让我收到此错误“公共类型 UserdataList 必须在其自己的文件中定义”我必须在哪里定义它?
  • 在新的 java 文件中创建它。不在 Appstate 类中。在您的项目中创建新的 UserdataList.java 文件。请参阅我编辑的答案以供参考。
【解决方案2】:

您可以使用 httppost 类来帮助您处理您的情况 你可以参考以下网址来帮助你

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2013-12-13
      • 2014-09-18
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      相关资源
      最近更新 更多