繁体   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

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在从Android客户端上的Python服务器接收数据,并将数据存储在名为Answerfromserver的变量中。 之后,我使用Answerfromserver从wamp数据库检索数据。 现在,当我在手机上安装该应用程序时,发生的事情是当我从Wamp获取正确的数据以进行检索时,我的应用程序崩溃了。 我正在附上我的应用代码,请对此提供帮助。

编辑-我注释掉了从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();
            }

        }

    }
问题暂未有回复.您可以查看右边的相关问题.
1 从客户端到服务器接收字符串值

我正在与yii-2 php一起在Android上工作。 从我的app我使用api调用将一些照片发送到文件中。 与此同时,我还发送了一个参考号,如下所示。 调用如下所示初始化 应用程序的工作 用户记下安装细节并拍照 在关闭表单时,两个API称为i)API,用于 ...

2 Android 客户端未从 Python 服务器 (SOCKET) 接收

我是编程新手,一直在浏览我的项目的教程。 如果我对大多数事情似乎一无所知,请原谅我。 我目前正在开发一个项目,该项目需要 Android 客户端将字符串数据发送到 Python 服务器,在那里数据将被处理并从 Python 服务器发送回 Android 客户端。 我正在使用 Socket 并设法将 ...

3 从服务器到客户端接收数据

我有这三个类,TCPClient,TCPServer和Member。 我正在使用TCPClient将RequestPacket对象发送到TCPServer,然后,TCPServer用字符串响应。 这是代码: TCP服务器 TCP客户端 RequestPacket / * ...

4 Apigee 未收到来自客户端应用程序的请求标头的值

我有一个 Vue.js 应用程序,它使用 axios 向 ApiGee 服务器发送请求。 这是我用来向 APIgee 发送请求的代码。 从 ApiGee 中,我可以看到 OPTIONS 请求首先被接收,因为我完成了来自客户端浏览器的请求。 我还可以看到X-API-Key标头键,但缺少该值。 ...

5 客户端未从服务器接收数据

我正在尝试使用带有PyQt 4的GUI来创建聊天应用程序。我决定将接收部分“放入”以该应用程序开头的另一个线程。 问题是客户端没有从服务器接收任何数据。 我不知道该怎么办...是因为线程? 接收处于while循环中,因此它正在接收数据“ 24/7”,似乎应该可以正常工作。 我究竟做错了 ...

7 PHP服务器套接字从python客户端套接字接收连续数据

我试图将数据从python客户端套接字连续发送到php服务器套接字,我已经能够发送一次数据并打印出来。 但是,如果我将服务器置于while循环中以继续监听,则不再打印输出的数据。 如果我发回一些消息,它仍然会响应客户端。 Python客户端代码(这将放置在每次我发送内容时都会调用的函数 ...

8 从mysql数据库接收数据并在TextView上显示

我试图从SQL表接收数据并将其显示在TextView上。 这是我到目前为止的代码..没有错误。 什么都没发生。 我使用AsyncTask从数据库中读取并使用OnpostExecute来写入数据 这不起作用。 我做错了什么吗? ...

暂无
暂无

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

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