从Android应用程序中使用Web服务

时间:2013-01-08 13:58:49

标签: android asp.net-web-api

我是Android应用开发的初学者。我想确认我的方法是否正确并且符合Android世界中的最佳做法。

我有一个需要文本数据的Android应用程序(没有图形,视频)。数据来自基于REST的Web服务作为JSON字符串。我使用HttpGet对象使用此Web服务,使用JSONArray解析json字符串并显示数据。

所有这些都发生在点击按钮上。

我的问题是:

  1. 有没有更好的(或Android风格)方法来做同样的事情?
  2. 检索图形内容并将其发布到基于REST的Web服务的首选方法是什么?
  3. 非常感谢任何帮助。

    由于

2 个答案:

答案 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)

嘿,请参考这个link,它会更好地训练您在Android应用程序中解析json数据。加载图形需要一些延迟加载机制,您可以从here引用它。