在android studio-Java中从python服务器接收数据到客户端
我使用WebSocket将字符串从python服务器传递到android studio java客户端。我检查了服务器发送的字符串(通过在python中打印它),结果正常,所以我想问题在于如何在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
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(“”){
}//此字符串
)