Android应用开发中一般会用到访问网络请求,可以使用socket,webservice等。这里我只是用java中URL,传送数据方式采用json,不考虑数据加密问题。封装的工具类很简单,只提供post,get方法。由于androidUI主线程中不允许启动线程,这里使用FutrueTask启动线程获得返回结果。代码如下:
public class HttpUtil { /** * get方式访问服务器 * @param url * @param params * @return * @throws Exception */ public static String get(final String url, final Map<String, Object> params)throws Exception{ String r = null; FutureTask<String> task = new FutureTask<String>(new Callable<String>() { @Override public String call() throws Exception { BufferedReader bufferedReader = null; String result = null; try { String getUrl = url + "?" + getParams(params); Log.i("ApplicationTest", getUrl); URL realUrl = new URL(getUrl); URLConnection connection = realUrl.openConnection(); connection.connect(); bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line = null; StringBuffer sb = new StringBuffer(); while((line = bufferedReader.readLine())!=null){ sb.append(line); } result = sb.toString(); } catch (IOException e) { Log.i("ApplicationTest", "xxxxx1"); e.printStackTrace(); throw e; }finally { if(bufferedReader != null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } }); new Thread(task).start(); try { r = task.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return r; } /** * post方式访问服务器 * @param url * @param params * @return * @throws Exception */ public static String post(final String url, final Map<String, Object> params)throws Exception{ String r = null; FutureTask<String> task = new FutureTask<String>(new Callable<String>() { @Override public String call() throws Exception { String result = null; BufferedReader bufferedReader = null; PrintWriter out = null; try { String getUrl = url; URL realUrl = new URL(getUrl); URLConnection connection = realUrl.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); out = new PrintWriter(connection.getOutputStream()); out.print(getParams(params)); out.flush(); bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line = null; StringBuffer sb = new StringBuffer(); while((line = bufferedReader.readLine())!=null){ sb.append(line); } result = sb.toString(); } catch (IOException e) { e.printStackTrace(); throw e; }finally { if(bufferedReader != null){ try { bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } } return result; } }); new Thread(task).start(); try { r = task.get(); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } return r; } /** * 组装请求参数 * @param params * @return */ private static String getParams(Map<String, Object> params){ StringBuffer sb = new StringBuffer(); if(params != null){ for(String key : params.keySet()){ sb.append(key).append("=").append(params.get(key).toString()).append("&"); } if(sb.indexOf("&") == sb.length()-1){ sb.deleteCharAt(sb.length()-1); } } return sb.toString(); } }
如果使用HttpClient工具包,代码会更简单。这里就不列出。
相关推荐
Android Volley 是Google推出的一款高效的网络请求库,专为Android应用设计,旨在简化网络通信并优化性能。Volley提供了异步请求处理、缓存策略、线程管理以及强大的错误处理机制,使得开发者能够更加便捷地进行网络...
在Android应用开发中,网络请求是必不可少的一部分,用于与服务器进行数据交互,如获取或发送用户数据、更新应用内容等。本篇文章将详细介绍几个常用的Android网络请求框架:OkHttp、Volley、HttpClient以及XUtils。...
在Android开发中,网络请求是应用与服务器交互的基础,它涉及到数据的获取、发送和处理。为了提高代码的可复用性和可维护性,通常会将网络请求进行封装,以便在多个地方方便地调用。以下是一些关于“Android网络请求...
在Android应用开发中,发起POST网络请求是与服务器交互的重要环节。Android Studio作为官方推荐的集成开发环境(IDE),提供了丰富的工具和库来简化这一过程。本文将详细讲解如何在Android Studio中使用Java语言和...
在Android开发中,自定义对话框(Dialog)是一种常见的用户交互方式,特别是在处理用户需要做出选择的情景。...通过深入学习和分析这份代码,开发者可以提升在Android应用中构建复杂交互界面的能力。
这些源代码旨在帮助开发者深入理解Android应用中的网络通信技术,包括不同类型的HTTP请求(GET与POST)、异步加载图片以及在WebView中加载网页等内容。以下是对每个文件名称涉及知识点的详细解释: 1. **Android之...
在Android应用开发中,网络请求是必不可少的一部分,用于与服务器进行数据交互,获取或发送信息。本篇将详细解析"网络请求工具类"所涵盖的知识点,包括原生的HttpClient、HttpUrlConnection、Xutils以及Volley框架的...
在Android应用开发中,网络请求是必不可少的一部分,用于获取服务器上的数据或发送用户的数据到服务器。本篇文章将详细探讨两个常用的网络请求库:Volley和AsyncHttp,它们都是Android开发者们常常选择的工具。 ...
在Android应用开发中,网络请求是必不可少的一部分,它使得应用程序能够获取远程服务器的数据,实现与互联网的交互。本文将深入探讨Android中常见的网络请求方式,包括HTTPClient、HttpURLConnection和Socket,以及...
OkHttp是一个流行的HTTP客户端,用于在Android应用程序中发送和接收网络请求。它提供了简单的接口和强大的功能来处理网络请求。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它易于人阅读和编写...
OkHttp 是由 Square 公司开发的一个高效的网络请求库,广泛应用于 Android 开发中。它以其强大的性能、简单易用的 API 和丰富的特性,深受开发者喜爱。OkHttp 的核心设计理念是通过减少网络交互的延迟,优化连接和...
总的来说,"Android动态请求权限工具类"是应对Android运行时权限模型的一种有效策略,它使得应用在遵循最佳实践的同时,能够更友好地与用户交互,提升用户体验。开发者应当充分利用这样的工具,确保应用在请求权限时...
OkHttp是一款高效且流行的网络库,它提供了异步和同步的HTTP请求方式,而协程(Coroutines)是Kotlin为解决Android应用程序中的多线程问题引入的一种轻量级线程管理机制。本项目“Android 基于协程OkHttp网络请求...
在Android开发中,网络状态的获取是至关重要的,它涉及到应用程序能否正常地访问网络资源,如下载数据、发送请求或实时...通过理解并使用NetworkTools-master中的组件,我们可以创建更加健壮和用户友好的Android应用。
2. JSON解析:Android应用程序经常需要与服务器交换JSON格式的数据。书中介绍了使用Gson和Jackson库进行JSON序列化和反序列化的技巧,以及如何手动解析JSON对象和数组。 3. 网络状态管理:Android设备的网络环境...
这个名为 "Android-一个retrofit2.0okHttp3rxjava的网络请求工具类" 的项目,就是将这三个组件进行了封装,以方便开发者直接使用。 首先,我们来详细了解一下这三个库: 1. **Retrofit2.0**:这是一个由Square公司...
"Android应用初始化工具"就是专为优化这一过程而设计的。这个工具旨在帮助开发者更有效地管理应用的启动阶段,确保各种依赖和服务在正确的时间以最优化的方式被加载。 在Android应用中,初始化通常涉及以下环节: ...
3. 异步处理:Android应用通常在子线程中进行网络请求,避免阻塞主线程。 4. 数据解析:接收到服务器响应后,解析JSON或其他格式的数据。 5. 数据处理:将解析后的数据保存到本地或直接用于UI展示。 6. 错误处理:...
然而,有时我们需要手动安装未在市场发布的APK,或者在没有网络连接的情况下安装应用,这时Android应用程序安装工具就显得非常实用。它提供了一个图形化的界面,使得非技术人员也能简单、快速地完成APK的安装过程,...
在Android开发中,网络请求和数据解析是两个关键的环节,它们构成了应用程序与服务器交互的基础。本主题将深入探讨Android中的网络请求框架和解析技术,帮助开发者理解和掌握这些核心技术。 一、网络请求框架 1. *...