繁体   English   中英

android不发送数据

[英]not send data post android

我正在尝试与我的Android应用mysql建立连接。

我已经读过它是一个Web服务。

我正在尝试将两个post变量发送到url中的php文件,以将该信息保留在mysql数据库中。

问题在于它不发送任何东西。

我正在用android开始编程,为此我感谢他的友善,并帮助学习和解决了incoveniete。

感谢您的所有评论和帮助。

这是我的班java:

    package com.example.prueba;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;




import android.app.Activity;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;


public class EnviarVariables extends Activity {



    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_main); // aqui decimos que esta clase manipula los objetos del activity_saludo.xml


        Button btnSend = (Button) findViewById(R.id.button1);
        btnSend.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {


               new Insertar(EnviarVariables.this).execute();



            }
    });




    }

    private boolean insertar(){

        EditText etNombre = (EditText) findViewById(R.id.editText1);
        EditText etEmail = (EditText) findViewById(R.id.editText2);

        HttpClient httpclient; //envia la info almacenada en httppost al webservice
        List<NameValuePair> nameValuePairs;
        HttpPost httppost; // almacena los datos a enviar, por medio de HttpClient
        httpclient = new DefaultHttpClient();
        httppost = new HttpPost("http://launidad.co/pruebaAndroid/index.php"); //url del servidor donde enviamos los datos

        nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("nombre",etNombre.getText().toString().trim()));
        nameValuePairs.add(new BasicNameValuePair("email",etEmail.getText().toString().trim()));

        try {
               httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
               httpclient.execute(httppost);
               return true;
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return false;
        }



        //AsyncTask para insertar Personas
        class Insertar extends AsyncTask<String,String,String>{

            private Activity context;

            Insertar(Activity context){
                this.context=context;
            }
            @Override
            protected String doInBackground(String... params) {
                // TODO Auto-generated method stub
                if(insertar())
                    context.runOnUiThread(new Runnable(){
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub                          
                            Toast.makeText(context, "Persona insertada con éxito", Toast.LENGTH_LONG).show();


                        }                       
                    });
                else
                    context.runOnUiThread(new Runnable(){
                        @Override
                        public void run() {
                            // TODO Auto-generated method stub                          
                            Toast.makeText(context, "Persona no insertada con éxito", Toast.LENGTH_LONG).show();
                        }                   
                    });
                  return null;
            }           



        }





}

当然这是行不通的。 第一:您无法在UI线程中执行任何http请求。 这是应该使情况更清楚的问题。

如果您想通过http发送/接收任何数据,请考虑以下场景:

  1. 使用AsyncTask
  2. 使用Service并通过BroadcastReceiver / EventBus / Otto动态审核UI,
  3. 在活动中运行单独的线程,并使用runOnUiThread (这种方法虽然不太优雅,但可能)。

正如laalto建议的那样,请记录您的异常并找出它们的含义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM