我最近一直在研究很多关于Android开发的内容,并且真正了解它,我想开始构建一个简单的应用程序,让我开始。不幸的是,我觉得我读的越多,我就越困惑。
我想构建一个扫描和读取条形码的应用程序,使用条形码中的EAN查询RESTful Web服务并输出产品名称。
现在,扫描部分很简单,因为我使用zxing库作为意图服务。然后,我玩了一个名为Volley的框架,该框架应该处理与Web服务的网络通信并解析JSON结果。不幸的是,我无法将Volley与我的应用程序集成,但也许这个方便的工具比我实际需要的更多。
实现上述目标的正确方法是什么?我需要内容提供商吗?我需要服务吗?这些如何相互关联?
答案 0 :(得分:1)
我使用此库来处理与API的通信:https://github.com/koush/ion
它易于使用,有示例和代码示例。
答案 1 :(得分:1)
我自己没有和Volley一起工作,所以如果你想要实现的目标太过先进,我就无法给你一个答案。通常,当涉及到与服务器的HTTP通信时,我更喜欢使用AndroidAsyncHttpClient:
“基于Apache的HttpClient库构建的基于异步回调的Android Http客户端。所有请求都是在应用程序的主UI线程之外发出的,但任何回调逻辑都将在使用回调创建的同一线程上执行Android的Handler消息传递。“
与您想要做的相关的示例:
public class YourActivity extends Activity {
private void handleScannedBardcode(String barcode) {
// you need to make the request match the REST API you are using
RequestParams params = new RequestParams();
params.put("A_KEY_TO_IDENTIFY_THE_PARAMETER", barcode);
AsyncHttpClient client = new AsyncHttpClient();
client.post("http://www.yourserver.com", params, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
// you need to add parsing of JSON data to match the response
JSONObject jo = new JSONObject(response);
String productName = jo.getString("productname");
updateProductView(productName);
}
});
}
private void updateProductView(String productName) {
// you need to use a view id that corresponds to a textview in your layout xml
TextView tv = (TextView)findViewById(R.id.productName);
tv.setText(productName);
}
}
根据JSON响应的复杂程度,您可以选择GSON或Jackson来解析大量JSON或普通JSONObject
答案 2 :(得分:1)
首先使用简单的解决方案:
HttpURLConnection
连接网络服务InputStreamReader
或BufferedInputStream
从连接中读取输入流。 JSON
模型类。Google GSON
库将响应解析为JSONResponse
,然后使用数据。我相信你能够找到足够的关于这些个人观点的帮助来帮助你入门。