详解Android提交数据到服务器的两种方式四种方法
2019/7/7 21:13:52
本文主要是介绍详解Android提交数据到服务器的两种方式四种方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法。
代码比较简单,这里不去过多的阐述,直接看代码。
/** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDataByDoGet(Map<String, String> map, String path) throws Exception { // 拼凑出请求地址 StringBuilder sb = new StringBuilder(path); sb.append("?"); for (Map.Entry<String, String> entry : map.entrySet()) { sb.append(entry.getKey()).append("=").append(entry.getValue()); sb.append("&"); } sb.deleteCharAt(sb.length() - 1); String str = sb.toString(); System.out.println(str); URL Url = new URL(str); HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection(); HttpConn.setRequestMethod("GET"); HttpConn.setReadTimeout(5000); // GET方式的请求不用设置什么DoOutPut()之类的吗? if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) { return true; } return false; } /** * 普通方式的DoPost请求提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDataByDoPost(Map<String, String> map, String path) throws Exception { // 注意Post地址中是不带参数的,所以newURL的时候要注意不能加上后面的参数 URL Url = new URL(path); // Post方式提交的时候参数和URL是分开提交的,参数形式是这样子的:name=y&age=6 StringBuilder sb = new StringBuilder(); // sb.append("?"); for (Map.Entry<String, String> entry : map.entrySet()) { sb.append(entry.getKey()).append("=").append(entry.getValue()); sb.append("&"); } sb.deleteCharAt(sb.length() - 1); String str = sb.toString(); HttpURLConnection HttpConn = (HttpURLConnection) Url.openConnection(); HttpConn.setRequestMethod("POST"); HttpConn.setReadTimeout(5000); HttpConn.setDoOutput(true); HttpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); HttpConn.setRequestProperty("Content-Length", String.valueOf(str.getBytes().length)); OutputStream os = HttpConn.getOutputStream(); os.write(str.getBytes()); if (HttpConn.getResponseCode() == HttpURLConnection.HTTP_OK) { return true; } return false; } /** * 以HttpClient的DoGet方式向服务器发送请数据 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submitDataByHttpClientDoGet(Map<String, String> map, String path) throws Exception { HttpClient hc = new DefaultHttpClient(); // 请求路径 StringBuilder sb = new StringBuilder(path); sb.append("?"); for (Map.Entry<String, String> entry : map.entrySet()) { sb.append(entry.getKey()).append("=").append(entry.getValue()); sb.append("&"); } sb.deleteCharAt(sb.length() - 1); String str = sb.toString(); System.out.println(str); HttpGet request = new HttpGet(sb.toString()); HttpResponse response = hc.execute(request); if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) { return true; } return false; } /** * 以HttpClient的DoPost方式提交数据到服务器 * @param map 传递进来的数据,以map的形式进行了封装 * @param path 要求服务器servlet的地址 * @return 返回的boolean类型的参数 * @throws Exception */ public Boolean submintDataByHttpClientDoPost(Map<String, String> map, String path) throws Exception { // 1. 获得一个相当于浏览器对象HttpClient,使用这个接口的实现类来创建对象,DefaultHttpClient HttpClient hc = new DefaultHttpClient(); // DoPost方式请求的时候设置请求,关键是路径 HttpPost request = new HttpPost(path); // 2. 为请求设置请求参数,也即是将要上传到web服务器上的参数 List<NameValuePair> parameters = new ArrayList<NameValuePair>(); for (Map.Entry<String, String> entry : map.entrySet()) { NameValuePair nameValuePairs = new BasicNameValuePair(entry.getKey(), entry.getValue()); parameters.add(nameValuePairs); } // 请求实体HttpEntity也是一个接口,我们用它的实现类UrlEncodedFormEntity来创建对象,注意后面一个String类型的参数是用来指定编码的 HttpEntity entity = new UrlEncodedFormEntity(parameters, "UTF-8"); request.setEntity(entity); // 3. 执行请求 HttpResponse response = hc.execute(request); // 4. 通过返回码来判断请求成功与否 if (response.getStatusLine().getStatusCode() == HttpURLConnection.HTTP_OK) { return true; } return false; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持找一找教程网。
这篇关于详解Android提交数据到服务器的两种方式四种方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-18android.permission.read_media_video
- 2024-01-18android_getaddrinfo failed eai_nodata
- 2024-01-18androidmo
- 2024-01-15Android下三种离屏渲染技术
- 2024-01-09Android 蓝牙使用
- 2024-01-06Android对接华为AI - 文本识别
- 2023-11-15代码安全之代码混淆及加固(Android)
- 2023-11-10简述Android语音播报TTS
- 2023-11-06Android WiFi工具类
- 2023-07-22Android开发未来的出路