Android 通过Get/Post提交请求数据到服务器

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.lifengfeng.submitdata.utils;
 
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
 
import android.util.Log;
 
public class NetUtils {
 
     private static final String TAG = "NetUtils" ;
     
     /**
      * 使用post的方式登录
      * @param userName
      * @param password
      * @return
      */
     public static String loginOfPost(String userName, String password) {
         HttpURLConnection conn = null ;
         try {
             URL url = new URL( "http://10.0.2.2:8080/Server/servlet/LoginServlet" );
             
             conn = (HttpURLConnection) url.openConnection();
             
             conn.setRequestMethod( "POST" );
             conn.setConnectTimeout( 10000 ); // 连接的超时时间
             conn.setReadTimeout( 5000 ); // 读数据的超时时间
             conn.setDoOutput( true ); // 必须设置此方法, 允许输出
//          conn.setRequestProperty("Content-Length", 234);     // 设置请求头消息, 可以设置多个
             
             // post请求的参数
             String data = "username=" + userName + "&password=" + password;
             
             // 获得一个输出流, 用于向服务器写数据, 默认情况下, 系统不允许向服务器输出内容
             OutputStream out = conn.getOutputStream(); 
             out.write(data.getBytes());
             out.flush();
             out.close();
             
             int responseCode = conn.getResponseCode();
             if (responseCode == 200 ) {
                 InputStream is = conn.getInputStream();
                 String state = getStringFromInputStream(is);
                 return state;
             } else {
                 Log.i(TAG, "访问失败: " + responseCode);
             }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (conn != null ) {
                 conn.disconnect();
             }
         }
         return null ;
     }
 
     /**
      * 使用get的方式登录
      * @param userName
      * @param password
      * @return 登录的状态
      */
     public static String loginOfGet(String userName, String password) {
         HttpURLConnection conn = null ;
         try {
             String data = "username=" + URLEncoder.encode(userName) + "&password=" + URLEncoder.encode(password);
             URL url = new URL( "http://10.0.2.2:8080/Server/servlet/LoginServlet?" + data);
             conn = (HttpURLConnection) url.openConnection();
             
             conn.setRequestMethod( "GET" );       // get或者post必须得全大写
             conn.setConnectTimeout( 10000 ); // 连接的超时时间
             conn.setReadTimeout( 5000 ); // 读数据的超时时间
             
             int responseCode = conn.getResponseCode();
             if (responseCode == 200 ) {
                 InputStream is = conn.getInputStream();
                 String state = getStringFromInputStream(is);
                 return state;
             } else {
                 Log.i(TAG, "访问失败: " + responseCode);
             }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (conn != null ) {
                 conn.disconnect();      // 关闭连接
             }
         }
         return null ;
     }
     
     /**
      * 根据流返回一个字符串信息
      * @param is
      * @return
      * @throws IOException
      */
     private static String getStringFromInputStream(InputStream is) throws IOException {
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
         byte [] buffer = new byte [ 1024 ];
         int len = - 1 ;
         
         while ((len = is.read(buffer)) != - 1 ) {
             baos.write(buffer, 0 , len);
         }
         is.close();
         
         String html = baos.toString();  // 把流中的数据转换成字符串, 采用的编码是: utf-8
         
//      String html = new String(baos.toByteArray(), "GBK");
         
         baos.close();
         return html;
     }
}
目录
相关文章
|
23天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
37 3
|
2月前
|
JSON JavaScript 前端开发
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
《进阶篇第6章:vue中的ajax》包括回顾发送ajax请求方式、vue-cli脚手架配置代理服务器、vue-resource
59 22
|
15天前
|
存储 运维 算法
服务器数据恢复—raid6阵列硬盘重组raid5阵列如何恢复raid6阵列数据?
服务器存储数据恢复环境: 存储中有一组由12块硬盘组建的RAID6阵列,上层linux操作系统+EXT3文件系统,该存储划分3个LUN。 服务器存储故障&分析: 存储中RAID6阵列不可用。为了抢救数据,运维人员使用原始RAID中的部分硬盘重新组建RAID并进行了初始化。 初始化开始一段时间后,运维人员察觉到情况有异后强制终止初始化,这个时候初始化已经完成一半以上。数据部分已被不可逆的破坏。
|
2月前
|
存储 数据挖掘
服务器数据恢复—用RAID5阵列中部分盘重建RAID5如何恢复原raid5阵列数据?
服务器数据恢复环境: 一台服务器挂接一台存储,该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障: 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性,阵列并没有出现问题。工作一段时间后,服务器出现故障,用户方请人维修。维修人员在没有了解故障磁盘阵列环境的情况下,用另外4块硬盘(除去掉线的硬盘)重新创建了一组全新的RAID5阵列并完成数据同步,导致原raid5阵列数据全部丢失。
|
2月前
|
前端开发 JavaScript Java
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
第6章:Vue中的ajax(包含:回顾发送ajax请求方式、vue-cli脚手架配置代理服务器)
81 4
|
2月前
|
Python
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
34 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
Android--httpclient模拟post请求和get请求
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/50964727 HttpClient的使用模式: 1.
952 0
|
21天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
8天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
35 19
|
8天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
33 14