我是Android应用开发的初学者。我想确认我的方法是否正确并且符合Android世界中的最佳做法。
我有一个需要文本数据的Android应用程序(没有图形,视频)。数据来自基于REST的Web服务作为JSON字符串。我使用HttpGet对象使用此Web服务,使用JSONArray解析json字符串并显示数据。
所有这些都发生在点击按钮上。
我的问题是:
非常感谢任何帮助。
由于
答案 0 :(得分:1)
请找我的内联通讯, 所有这些都发生在点击按钮上。
我的问题是:
有更好的(或机器人式)方法吗?
在Async任务或服务中触发Webservice调用的理想方法,因此在HTTP触发并获得响应之前,您的UI线程不会被阻止。
检索图形内容并将其发布到基于REST的Web服务的首选方法是什么?
当您尝试从后端检索图形内容时,图形内容通常是base64。 请参阅此示例:http://androidtrainningcenter.blogspot.in/2012/03/how-to-convert-string-to-bitmap-and.html
将图形发布到服务器 我将假设您知道要上载的图像的路径和文件名。使用image作为键名,将此字符串添加到NameValuePair。
可以使用HttpComponents库完成发送图像。使用依赖项包下载最新的HttpClient(当前4.0.1)二进制文件,并将apache-mime4j-0.6.jar和httpmime-4.0.1.jar复制到您的项目中,并将它们添加到Java构建路径中。
您需要将以下导入添加到您的班级。
import org.apache.http.entity.mime.HttpMultipartMode; import org.apache.http.entity.mime.MultipartEntity; import org.apache.http.entity.mime.content.FileBody; import org.apache.http.entity.mime.content.StringBody; 现在,您可以创建MultipartEntity以将图像附加到POST请求。以下代码显示了如何执行此操作的示例:
public void post(String url,List nameValuePairs){ HttpClient httpClient = new DefaultHttpClient(); HttpContext localContext = new BasicHttpContext(); HttpPost httpPost = new HttpPost(url);
try {
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
for(int index=0; index < nameValuePairs.size(); index++) {
if(nameValuePairs.get(index).getName().equalsIgnoreCase("image")) {
// If the key equals to "image", we use FileBody to transfer the data
entity.addPart(nameValuePairs.get(index).getName(), new FileBody(new File (nameValuePairs.get(index).getValue())));
} else {
// Normal string data
entity.addPart(nameValuePairs.get(index).getName(), new StringBody(nameValuePairs.get(index).getValue()));
}
}
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost, localContext);
} catch (IOException e) {
e.printStackTrace();
}
}
希望这有帮助!
答案 1 :(得分:0)