Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android studio-Java中从python服务器接收数据到客户端_Java_Android_Python - Fatal编程技术网

在android studio-Java中从python服务器接收数据到客户端

在android studio-Java中从python服务器接收数据到客户端,java,android,python,Java,Android,Python,我使用WebSocket将字符串从python服务器传递到android studio java客户端。我检查了服务器发送的字符串(通过在python中打印它),结果正常,所以我想问题在于如何在java中获取数据 我需要发送这样的邮件: 我有一个保存数据的python列表。我不知道她的长度,所以我使用len(我的列表)发送。当然,我的列表中甚至有单元格,每次我都需要发送两个单元格。这是我用Java编写的代码: 服务器处理程序: package cyber_pro4.com; import a

我使用WebSocket将字符串从python服务器传递到android studio java客户端。我检查了服务器发送的字符串(通过在python中打印它),结果正常,所以我想问题在于如何在java中获取数据

我需要发送这样的邮件: 我有一个保存数据的python列表。我不知道她的长度,所以我使用
len(我的列表)
发送。当然,我的列表中甚至有单元格,每次我都需要发送两个单元格。这是我用Java编写的代码:

服务器处理程序:

package cyber_pro4.com;


import android.content.Context;
import android.widget.Toast;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;

public class ServerHandler
{

    private OkHttpClient client;
    private WebSocket ws;
    private WebSocketListener listener;

    private Context context;

    private String message = "";

    public ServerHandler(Context context) {
        this.context = context;
        init();
    }

    private void init() {
        client = new OkHttpClient();
        listener = new SocketListener();
    }

    public void start() {
        Request request = new Request.Builder().url("ws://10.0.0.22:8080").build();
        ws = client.newWebSocket(request, listener);
        Toast.makeText(context, "connected to server", Toast.LENGTH_SHORT).show();
    }

    public void sendMessage(String message) {
        ws.send(message);
    }

    public String getMessage() {
        System.out.println("BATMAN GET " + message);
        String msg = message;
        message = "";
        return msg;
    }

    public void resetMessage() { message = ""; }

    public void closeConnection() {
        client.dispatcher().executorService().shutdown();
    }

    private final class SocketListener extends WebSocketListener {

        @Override
        public void onMessage(WebSocket webSocket, String text) {
            message = text;
        }

        @Override
        public void onClosing(WebSocket webSocket, int code, String reason) {
            webSocket.close(1000, null);
        }
    }

}



我获取数据的方式:

       ServerHandler serverHandler2;
       serverHandler2 = new ServerHandler(Fish_info.this);
       serverHandler2.start();
       serverHandler2.sendMessage("send pic of fish"); 

       String message,message2;

       int i = 1;

       while (i > 0)
       {

           message = "";
           while ((message = serverHandler2.getMessage()).equals("")) {
           } //this string 

           if (!(message.equals("false"))) // if the server return false- that mean this is the end of my list
           {
               message2 = "";
               while ((message2 = serverHandler2.getMessage()).equals("")) {
               } //this string is a info

              Toast.makeText(this, message, Toast.LENGTH_LONG).show();
              Toast.makeText(this, message2, Toast.LENGTH_LONG).show();


           }
           else
           {
               Toast.makeText(this, "There you go- the end of the list", Toast.LENGTH_LONG).show();
               i = -5;
           }

       }

我只烘烤列表的前两个单元格,即使列表有4个单元格。
为什么会这样?

我设法做到了,为了那些将来需要它的人——我刚刚做了一个
serverHandler2.sendMessage(“发送鱼的图片”)在我从服务器接收所有数据之前。(通过
message=”“的代码接收);
而((message=serverHandler2.getMessage()).equals(“”){
}//此字符串