如何从Android的发送对象与Servlet?

我在看来自Android客户端,以我的服务器运行Java servlet为通过HTTP发送对象。 该对象可以容纳一个位图图像,而我只是想知道,如果你能告诉我从客户端发送一个对象到服务器的一个例子。

我读别人说用JSON形式,但在我看来,JSON工作,只有文本数据。 如果它不能够有人告诉我如何与包含图像的对象使用它

--------------解决方案-------------

要在Java客户端和通过HTTP连接Java服务器之间发送的二进制数据,你已经基本上2个选项。

  1. 序列化,即让对象实现Serializable ,拥有的精确副本.class两侧文件,并通过发送它ObjectInputStream和阅读ObjectInputStream 。 优点:可笑容易。 缺点:可怜的向后兼容性(当您更改对象添加一个新的领域,你已经极度写了很多额外的代码和检查,以确保向后compatibitility)和可重用性差(在其他客户端不能重复使用/比Java那些服务器) 。
  2. 使用HTTP multipart/form-data 。 Advandage:可兼容(网络标准)和很好的可重用性(服务器上的其他客户端重复使用,客户端是其他服务器上可重用)。 缺点:很难实现(幸好有API和库本)。 在Android中,你可以使用内置HttpClient API来发送。 在Servlet的你可以使用Apache共享文件上传解析它。

我建议你​​使用的XStream

XSTREAM为你的servlet方:http://xstream.codehaus.org/tutorial.html

XStream的代码为Android进行了优化:http://jars.de/java/android-xml-serialization-with-xstream

如果要发送的图像和这样的,他们换到一个包含一个字节数组像一个在这里一个“信封”类:序列化和反序列化android.graphics.Bitmap在Java中

然后使用HttpClient的在你的Android应用程序将数据发送到你的servlet ^^另外,还要确保两个应用程序,并在servlet具有相同的类^^

的Socket API也很好。 在两侧创建插座将允许发送到从客户端Android应用程序服务器发送的原始数据。

这里为击球servlet并发送数据到服务器的代码。

boolean hitServlet(final Context context, final String data1,final String data2) {
String serverUrl = SERVER_URL + "/YourSevletName";
Map<String, String> params = new HashMap<String, String>();
params.put("data1", data1);
params.put("data2" data2)
long backoff = BACKOFF_MILLI_SECONDS + random.nextInt(1000);
// As the server might be down, we will retry it a couple
// times.
for (int i = 1; i <= MAX_ATTEMPTS; i++) {
try {
post(serverUrl, params);
return true;
} catch (IOException e) {
// Here we are simplifying and retrying on any error; in a real
// application, it should retry only on unrecoverable errors
// (like HTTP error code 503).
Log.e(TAG, "Failed " + i, e);
if (i == MAX_ATTEMPTS) {
break;
}
try {
Log.d(TAG, "Sleeping for " + backoff + " ms before retry");
Thread.sleep(backoff);
} catch (InterruptedException e1) {

// Activity finished before we complete - exit.
Log.d(TAG, "Thread interrupted: abort remaining retries!");
Thread.currentThread().interrupt();
return false;
}
// increase backoff exponentially
backoff *= 2;
}
}

return false;
}

分类:java的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.449 (s). 10 q(s)