我是这个论坛的新手。
我目前正在编写一个与基于 java 的服务器通信的 android 应用程序。目的是将一个片段(用 cam 制作)中的照片转换为 Base64-String 并将它们发送到 java-server。这一切正常,服务器和 android 应用程序之间的通信工作正常。
之后,服务器应该将 Base64-String 发送回客户端(发送到另一个片段)。这也运作良好。
主要问题是,当客户端收到字符串时,我只得到一行。我想将这些行附加到一个字符串,但它不起作用!
主要目的是恢复整张照片。
我会很感激一些帮助。
这是我的类,它连接到服务器并从中接收字符串。此类运行扩展了 AsyncTask。
导入android.os.AsyncTask;
公共类 ConnectToServer 扩展 AsyncTask {
static Socket socket;
String encodedBase64;
int protocolId;
private static DataOutputStream DOS;
String result1;
String value;
public ConnectToServer(String encoded) {
this.encodedBase64 = encoded;
}
public ConnectToServer(int i) {
this.protocolId = i;
}
public ConnectToServer() {
}
protected String doInBackground(Void... arg0) {
try {
socket = new Socket("192.168.1.104", 17110);
DOS = new DataOutputStream(socket.getOutputStream());
if (protocolId == 1) {
DOS.writeUTF("pictureload");
protocolId = 0;
} else {
DOS.writeBytes(encodedBase64);
receive();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result1;
}
public String receive() {
if (socket.isConnected()) {
try {
BufferedReader input = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
StringBuffer line = new StringBuffer();
while ((result1 = input.readLine()) != null) {
result1 = input.readLine();
line.append(result1);
}
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result1;
}
protected void onPostExecute(String result1) {
TimelineActivity tA = new TimelineActivity();
tA.encodeBase64(result1);
}
}