Android客户端数据提交:GET与POST实战解析
139 浏览量
更新于2024-08-31
收藏 57KB PDF 举报
本文主要介绍了Android客户端如何使用GET和POST方式向服务器提交数据,通过创建布局文件中的EditText和Button控件来实现数据的输入与发送,并提供了对应的代码示例。
在Android开发中,向服务器传输数据是常见的操作,通常有两种主要的方式:GET和POST。这两种方法都是HTTP协议中的请求类型,用于从客户端向服务器发送信息。
1. GET方式提交数据:
GET方法是将参数附加到URL后面,以键值对的形式进行传输。这种方式的数据量有限,一般适用于传递少量且不敏感的数据。在Android中,可以通过`AsyncTask`异步处理网络请求,避免阻塞UI线程。以下是一个简单的GET请求示例:
```java
private class GetDataTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... voids) {
try {
// 获取用户输入的数据
String name = et_main_name.getText().toString();
String pwd = et_main_pwd.getText().toString();
// 构建URL
url = new URL("http://yourserver.com/login?name=" + name + "&pwd=" + pwd);
// 创建HttpURLConnection对象
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("GET");
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
// 读取服务器响应
BufferedReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
return response.toString();
} else {
return "请求失败";
}
} catch (IOException e) {
return "异常:" + e.getMessage();
}
}
@Override
protected void onPostExecute(String result) {
// 处理返回的数据
}
}
// 在Button的点击事件中执行任务
public void getdata(View view) {
new GetDataTask().execute();
}
```
2. POST方式提交数据:
POST方法将数据封装在HTTP请求的Body部分,可以传输大量数据,适合处理敏感信息或大容量数据。在Android中,同样使用`AsyncTask`,但需设置Content-Type并手动写入请求体:
```java
private class PostDataTask extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... voids) {
try {
// 获取用户输入的数据
String name = et_main_name.getText().toString();
String pwd = et_main_pwd.getText().toString();
// 构建URL
url = new URL("http://yourserver.com/login");
// 创建HttpURLConnection对象
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setDoOutput(true); // 允许输出流
httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 设置Content-Type
// 写入请求体
DataOutputStream os = new DataOutputStream(httpURLConnection.getOutputStream());
os.writeBytes("name=" + name + "&pwd=" + pwd);
os.flush();
os.close();
int responseCode = httpURLConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
// 读取服务器响应
BufferedReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));
// 同上,处理返回的数据
} else {
return "请求失败";
}
} catch (IOException e) {
return "异常:" + e.getMessage();
}
return null;
}
@Override
protected void onPostExecute(String result) {
// 处理返回的数据
}
}
// 在Button的点击事件中执行任务
public void postdata(View view) {
new PostDataTask().execute();
}
```
以上示例展示了基本的GET和POST请求的实现方式,实际应用中可能需要处理更多细节,例如错误处理、超时重试、JSON数据序列化等。同时,为了遵循Android最佳实践,建议使用现代的网络库如Retrofit、OkHttp等来处理网络请求,它们能提供更强大、易用的功能和性能优化。
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2020-08-31 上传
2020-09-01 上传
2020-09-05 上传
点击了解资源详情
点击了解资源详情
weixin_38607282
- 粉丝: 3
- 资源: 973
最新资源
- 多约束下多车场车辆路径问题的蚁群算法研究
- 新东方英语词根词缀记忆大全
- AspectJ in Action 2003电子书
- 使用C#获取CPU及硬盘序列号
- 嵌入式Linux应用程序开发详解-第1章
- 移动数据通信的书Wireless and Mobile Data Networks.
- UML项目指导3-用例
- Matlab7官方学习手册
- 哈尔滨工业大学贾世楼的信息论的研究生课程讲义
- AT89S51实验及实践教程
- Dreamweaver MX 入门
- 信息论的研究生课程讲义
- 3G.Evolution.HSPA.and.LTE.for.Mobile.Broadband
- 学C都要来看看(应用版)
- 程序设计经典问题.doc
- 中文版AutoCAD_2007实用教程