简体   繁体   English

在android app client上从python服务器接收值,然后从mysql显示与该值相对应的数据

[英]receiving value from python server on android app client and then displaying data from mysql corresponding to the value

I'm getting to receive data from Python server on android client, and i'm storing the data in a variable called Answerfromserver. 我正在从Android客户端上的Python服务器接收数据,并将数据存储在名为Answerfromserver的变量中。 After that I'm using the Answerfromserver to retrieve data from wamp database. 之后,我使用Answerfromserver从wamp数据库检索数据。 Now when i install the app on my phone, what happens is that when i get the correct data for retrieval from wamp, so my app crashes. 现在,当我在手机上安装该应用程序时,发生的事情是当我从Wamp获取正确的数据以进行检索时,我的应用程序崩溃了。 I'm attaching my app code, please help me on this.. 我正在附上我的应用代码,请对此提供帮助。

Edit - I commented out the execute of the code where the data is received from the mysql wamp server, so in that case my app is correctly displaying the data from python server, but i comment out the execute of the python server code app crashes.. 编辑-我注释掉了从mysql wamp服务器接收到数据的代码的执行,因此在这种情况下,我的应用程序正确显示了来自python服务器的数据,但是我注释掉了python服务器代码应用程序的执行崩溃。 。

package marecki.androidsocketclient;

    import android.content.Context;
    import android.os.AsyncTask;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ProgressBar;
    import android.widget.TextView;
    import android.widget.Button;
    import android.widget.EditText;
    import android.view.View.OnClickListener;
    import android.widget.Toast;

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.ByteArrayOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.Socket;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.net.UnknownHostException;

    import static java.io.DataInputStream.readUTF;

    public class MainActivity extends AppCompatActivity {

        TextView textAnswer;
        Button buttonConnect;
        EditText editTextIP, editTextPort, message;
        ProgressBar progressBar;
        String result="";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            textAnswer = (TextView)findViewById(R.id.text_answer);
            buttonConnect = (Button)findViewById(R.id.connect);
            editTextIP = (EditText)findViewById(R.id.address);
            editTextPort = (EditText)findViewById(R.id.port);
            message = (EditText)findViewById(R.id.edit_message);

           progressBar = (ProgressBar)findViewById((R.id.progressBar));
           progressBar.setVisibility(ProgressBar.INVISIBLE);

            buttonConnect.setOnClickListener(buttonConnectOnClickListener);
        }

        OnClickListener buttonConnectOnClickListener = new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String Msg = message.getText().toString();

                ClientTask clientTask = new ClientTask(
                                                editTextIP.getText().toString(),
                                                Integer.parseInt(editTextPort
                                                                .getText().toString()),
                                                Msg);
                clientTask.execute();
            }
        };
        public class ClientTask extends AsyncTask <Void, Void, Void> {

            String IPaddress;
            int portAddress;
            String AnswerFromServer ="";
            String msgToServer;

            ClientTask(String address, int port, String msgToServ){
                IPaddress = address;
                portAddress = port;
                msgToServer = msgToServ;
            }

            @Override
            protected void onPreExecute() {
                progressBar.setVisibility(ProgressBar.VISIBLE);
            }

            @Override
            protected Void doInBackground(Void... arg0) {

                Socket socket = null;
                DataOutputStream dataOutputStream = null;
                DataInputStream dataInputStream = null;

                try {
                    socket = new Socket(IPaddress,portAddress);

                    dataOutputStream = new DataOutputStream(
                                                socket.getOutputStream());
                    BufferedReader br = new BufferedReader(
                                                new InputStreamReader(socket.getInputStream()));
                   // dataInputStream = new DataInputStream(
                   //                           socket.getInputStream());

                    if(msgToServer != null){
                        dataOutputStream.writeUTF(msgToServer);
                    }

                    AnswerFromServer = br.readLine();

                    String password = "123";
                    String type = "login";
                    BackgroundWorker backgroundWorker = 
                                new BackgroundWorker(MainActivity.this);
                    backgroundWorker.execute(type, AnswerFromServer, password);


                }catch (UnknownHostException e) {
                    e.printStackTrace();
                    AnswerFromServer = e.toString();
                }catch (IOException e) {
                    e.printStackTrace();
                    AnswerFromServer = e.toString();
                }finally {
                    if(socket != null){
                        try{
                            socket.close();
                        }catch (IOException e){
                            e.printStackTrace();
                        }
                    }
                }

                if(dataOutputStream != null){
                    try{
                        dataOutputStream.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                }

                if(dataInputStream != null){
                    try{
                        dataInputStream.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                }

                return null;

            }

            @Override
            protected void onPostExecute(Void aVoid) {
                progressBar.setVisibility(ProgressBar.INVISIBLE);
                textAnswer.setText(AnswerFromServer);
                Toast.makeText(MainActivity.this,result,Toast.LENGTH_LONG);
                super.onPostExecute(aVoid);
            }
        }

        public class BackgroundWorker extends AsyncTask<String,Void,String>
        {
            Context context;
            AlertDialog alertDialog;
            BackgroundWorker (Context ctx)
            {

            }

            @Override
            protected String doInBackground(String... params) {
                String type = params[0];
                String login_url="http;//192.168.8.103/login.php";
                if (type.equals("login"))
                {
                    try
                    {
                        String user_name = params[1];
                        String password = params[2];
                        URL url = new URL(login_url);
                        HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
                        httpURLConnection.setRequestMethod("POST");
                        httpURLConnection.setDoOutput(true);
                        httpURLConnection.setDoInput(true);
                        OutputStream outputStream = httpURLConnection.getOutputStream();
                        BufferedWriter bufferedWriter = 
                                        new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8"));
                        String post_data = 
                                        URLEncoder.encode("user_name","UTF-8")
                                                            +"="
                                                            + URLEncoder.encode(user_name,"UTF-8")
                                                            +"&"
                        +URLEncoder.encode("password","UTF-8")+"="+ URLEncoder.encode(password,"UTF-8");
                        bufferedWriter.write(post_data);
                        bufferedWriter.flush();
                        outputStream.close();
                        InputStream inputStream = httpURLConnection.getInputStream();
                        BufferedReader bufferedReader = 
                                        new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1"));
                        String result="";
                        String line="";
                        while ((line=bufferedReader.readLine())!=null)
                        {
                            result+=line;

                        }
                        bufferedReader.close();
                        inputStream.close();
                        httpURLConnection.disconnect();
                        return  result;





                    }
                    catch (MalformedURLException e)
                    {
                        e.printStackTrace();

                    }
                    catch (IOException e)
                    {
                        e.printStackTrace();

                    }
                }
                return null;
            }

            @Override
            protected void onPreExecute() {
                alertDialog = new AlertDialog.Builder(context).create();
                alertDialog.setTitle("Login Status");
            }

            @Override
            protected void onPostExecute(String result) {
                alertDialog.setMessage(result);
                alertDialog.show();
            }

        }

    }

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

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