服务器端代码
[java]
package org.xiazdong.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/PrintServlet")
public class PrintServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = new String(request.getParameter("name").getBytes("ISO-8859-1"),"UTF-8");
String age = new String(request.getParameter("age").getBytes("ISO-8859-1"),"UTF-8");
System.out.println("姓名:"+name+"\n年龄:"+age);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
System.out.println("姓名:"+request.getParameter("name")+"\n年龄:"+request.getParameter("age"));
}
}
Android端代码
[java]
package org.xiazdong.network.submit;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText name, age;
private Button getbutton, postbutton;
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
try{
if (getbutton == v) {
/*
* 因为是GET请求,所以需要将请求参数添加到URL后,并且还需要进行URL编码
* URL = http://192.168.0.103:8080/Server/PrintServlet?name=%E6%88%91&age=20
* 此处需要进行URL编码因为浏览器提交时自动进行URL编码
* */
StringBuilder buf = new StringBuilder("http://192.168.0.103:8080/Server/PrintServlet");
buf.append("?");
buf.append("name="+URLEncoder.encode(name.getText().toString(),"UTF-8")+"&");
buf.append("age="+URLEncoder.encode(age.getText().toString(),"UTF-8"));
URL url = new URL(buf.toString());
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
if(conn.getResponseCode()==200){
Toast.makeText(MainActivity.this, "GET提交成功", Toast.LENGTH_SHORT).show();
}
else Toast.makeText(MainActivity.this, "GET提交失败", Toast.LENGTH_SHORT).show();
}
if (postbutton == v) {
/*
* 如果是POST请求,则请求参数放在请求体中,
* name=%E6%88%91&age=12
*
* */
StringBuilder buf = new StringBuilder();
buf.append("name="+URLEncoder.encode(name.getText().toString(),"UTF-8")+"&");
buf.append("age="+URLEncoder.encode(age.getText().toString(),"UTF-8"));
byte[]data = buf.toString().getBytes("UTF-8");
URL url = new URL("http://192.168.0.103:8080/Server/PrintServlet");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true); //如果要输出,则必须加上此句
OutputStream out = conn.getOutputStream();
out.write(data);
if(conn.getResponseCode()==200){
Toast.makeText(MainActivity.this, "GET提交成功", Toast.LENGTH_SHORT).show();
}
else Toast.makeText(MainActivity.this, "GET提交失败", Toast.LENGTH_SHORT).show();
}
}
catch(Exception e){
} www.2cto.com
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
name = (EditText) this.findViewById(R.id.name);
age = (EditText) this.findViewById(R.id.age);
getbutton = (Button) this.findViewById(R.id.getbutton);
postbutton = (Button) this.findViewById(R.id.postbutton);
getbutton.setOnClickListener(listener);
postbutton.setOnClickListener(listener);
}
}
相关推荐
- HTTP请求:使用HttpURLConnection或OkHttp发送GET和POST请求。 - JSON解析:解析和序列化JSON数据,如使用Gson或Jackson库。 - 异步任务:了解AsyncTask,用于执行后台操作并更新UI。 7. **Ch09 - 服务和服务...
- HTTP请求:使用HttpURLConnection和HttpClient发送GET/POST请求。 - JSON解析:Gson和Jackson库用于解析JSON数据,构建对象模型。 - ASyncTask:处理后台任务,防止阻塞主线程。 - IntentService:后台服务...
- **HTTP请求**:使用HttpClient或Volley等库发送GET或POST请求获取网络数据。 - **JSON解析**:将服务器返回的JSON数据转换为Java对象以便处理。 #### 3. 多媒体开发 - **Camera API**:使用摄像头拍照或录制视频...
理解HTTP请求方法(GET、POST等)、状态码(200、404等)以及Header和Body的概念,是进行网络编程的基础。 三、Android中的HTTP通信 1. 使用HttpURLConnection:这是Android SDK内置的HTTP库,支持HTTP/1.1协议。...
理解HTTP协议和JSON数据格式,以及如何使用这些库发送GET、POST请求,是开发网络应用的基础。 Android的通知系统允许应用程序在后台与用户交互,学会创建和管理通知是提升用户体验的重要一环。同时,权限管理也是...
网络编程是现代移动应用不可或缺的一部分,因此书中也会讲解如何使用HTTP协议进行网络通信,包括使用AsyncTask或者Retrofit库来发送GET和POST请求,以及解析JSON数据。 最后,书中还会涉及一些高级主题,如多线程与...
为了发送GET或POST请求,Android开发者通常会使用HttpURLConnection、OkHttp或者Volley等库。OkHttp是高效的网络库,提供了简洁的API,而Volley则优化了网络请求的缓存和并发处理。 4. JSON解析: 在接收到服务器...
- **HTTP请求**:通过HttpURLConnection或第三方库如OkHttp进行GET和POST请求。 - **JSON解析**:使用Gson或Jackson库解析JSON数据。 - **异步处理**:理解AsyncTask,避免UI线程阻塞。 4. **蓝牙通讯**: - **...
书中会介绍如何实现GET和POST请求,以及如何处理JSON数据。 6. **多媒体支持**:Android支持音频、视频和图像处理。源代码可能包含使用MediaPlayer播放音频,Camera API捕获图片,以及使用Glide或Picasso加载网络...
- **使用示例**:如何定义服务接口,以及如何发送GET、POST等不同类型的请求。 ### 高级特性 1. **Service服务**: - **后台运行**:了解如何利用Service在后台执行长时间运行的任务。 - **绑定服务**:通过...
1. **HTTP请求**:使用HttpURLConnection或OkHttp发送GET、POST请求。 2. **JSON解析**:学习使用Gson或Jackson库解析JSON数据。 3. **异步处理**:理解AsyncTask、Handler和Thread池,处理网络操作的异步需求。 ...
- HTTP请求:学习使用HttpURLConnection、OkHttp等库发送GET、POST请求。 - JSON解析:掌握JSON数据格式的解析方法,能够将JSON数据转换为Java对象。 6. **多媒体应用**: - 摄像头操作:学习如何调用摄像头拍摄...
- 创建一个 `HttpRequestMessage` 对象,指定 HTTP 方法(GET、POST等)、URL 和可选的请求内容。 4. **发送请求并处理响应** - 使用 `HttpClient` 的 `SendAsync` 方法发送请求。 - `SendAsync` 返回一个 `Task...
源码会展示如何发送GET和POST请求,处理返回的JSON或XML数据,以及处理异步任务避免阻塞UI线程。 JDBC(Java Database Connectivity)是Java语言访问数据库的标准接口,尽管在Android中更常见的是使用SQLite数据库...
源代码可能涵盖了从发送GET/POST请求到解析JSON数据的完整流程。 最后,Android的异步处理机制,如AsyncTask、IntentService、Handler/Looper,用于解决耗时操作导致的主线程阻塞问题。源代码中可能会有这些异步...
1. **HTTP请求**:学会发起GET和POST请求,从服务器获取数据或向服务器发送数据,通常用于与Web服务进行交互。 2. **JSON解析**:掌握如何解析服务器返回的JSON格式数据,提取有用信息并在应用中展示。 3. **异步...
HttpURLConnection是原生的网络请求方式,适用于简单的GET或POST请求;AsyncTask则用于在后台线程执行网络任务,避免阻塞主线程。Volley和Retrofit是更高级的网络库,提供更便捷的API,支持异步请求、数据缓存等功能...
10. **网络编程**:介绍HTTP通信,使用HttpURLConnection和OkHttp库发送GET/POST请求,以及JSON数据的解析。 11. **权限管理**:讲解Android的权限模型,如何在Manifest中声明和在代码中处理权限请求。 12. **动画...
- HTTP请求处理:使用HttpURLConnection、OkHttp等库发送GET/POST请求。 - JSON数据解析:利用Gson、Jackson等库解析JSON数据。 - WebSocket通信:实现实时双向通信功能。 2. **多媒体开发**: - 音频视频播放...