1.java的servlet实现
import java.io.IOException;
import java.io.OutputStream;
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("/UrlServer")
public class UrlServer extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// req.setCharacterEncoding("utf-8"); //POST使用此方法
// 接收客户端的请求信息
String username = req.getParameter("username");
String password = req.getParameter("password");
// 解决中文乱码问题
byte[] name = username.getBytes("ISO-8859-1"); // 先把接收的字节转换为字符
username = new String(name, "UTF-8"); // 再把字符转换为字节
System.out.println(username + "\t" + password);
// 通过输出流,把响应结果写出去
OutputStream os = resp.getOutputStream();
if ("张三".equals(username) && "123".equals(password)) {
os.write("success".getBytes());
} else {
os.write("fail".getBytes());
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置编码
req.setCharacterEncoding("UTF-8");
// 接收客户端的请求信息
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println(username + "\t" + password);
// 通过输出流,把响应结果写出去
OutputStream os = resp.getOutputStream();
if ("张三".equals(username) && "123".equals(password)) {
os.write("success".getBytes());
} else {
os.write("fail".getBytes());
}
}
}2.httpUrlconectionget
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLEncoder;
- public class TestUrlGet {
- public static void main(String[] args) {
- try {
- //对输入的内容进行编码,防止中文乱码
- String username = URLEncoder.encode("张三", "UTF-8");
- //对应GET请求,要把请求信息拼接在url后面
- URL url = new URL("http://localhost:8080/day26_server/UrlServer?username="+username+"&password=123");
- //调用url的openConnection()方法,获得连接对象
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- //设置HttpURLConnection的属性
- conn.setRequestMethod("GET");
- conn.setReadTimeout(5000);
- conn.setConnectTimeout(5000);
- //只是建立一个连接, 并不会发送真正http请求 (可以不调用)
- conn.connect();
- //通过响应码来判断是否连接成功
- if (conn.getResponseCode() == 200) {
- //获得服务器返回的字节流
- InputStream is = conn.getInputStream();
- //内存输出流,适合数据量比较小的字符串 和 图片
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buf = new byte[1024];
- int len = 0;
- while((len = is.read(buf))!=-1){
- baos.write(buf, 0, len);
- }
- //可使用 toByteArray() 和 toString() 获取数据。
- byte[] result = baos.toByteArray();
- System.out.println(new String(result));
- is.close();
- System.out.println("客户端执行完毕!!");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
3.post
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLEncoder;
- public class TestUrlPost {
- public static void main(String[] args) {
- try {
- //post请求和get请求的最大不同就是提交请求信息的方式,post是通过把请求信息封装在http请求头中发送出去的
- URL url = new URL("http://localhost:8080/day26_server/UrlServer");
- //获得连接对象
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- //设置属性
- conn.setRequestMethod("POST");
- conn.setReadTimeout(5000);
- conn.setConnectTimeout(5000);
- //设置输入流和输出流,都设置为true
- conn.setDoOutput(true);
- conn.setDoInput(true);
- //设置http请求头(可以参照:http://tools.jb51.net/table/http_header)
- conn.setRequestProperty("Accept", "text/plain, text/html");//指定客户端能够接收的内容类型
- conn.setRequestProperty("Connection", "keep-alive"); //http1.1
- //封装要提交的数据
- String name = URLEncoder.encode("张三", "UTF-8");
- String message = "username="+name+"&password=123";
- //把提交的数据以输出流的形式提交到服务器
- OutputStream os = conn.getOutputStream();
- os.write(message.getBytes());
- //通过响应码来判断是否连接成功
- if (conn.getResponseCode() == 200) {
- //获得服务器返回的字节流
- InputStream is = conn.getInputStream();
- //内存输出流,适合数据量比较小的字符串 和 图片
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buf = new byte[1024];
- int len = 0;
- while((len = is.read(buf))!=-1){
- baos.write(buf, 0, len);
- }
- //可使用 toByteArray() 和 toString() 获取数据。
- byte[] result = baos.toByteArray();
- System.out.println(new String(result));
- is.close();
- System.out.println("客户端执行完毕!!");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- import java.io.ByteArrayOutputStream;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.net.URLEncoder;
- public class TestUrlGet {
- public static void main(String[] args) {
- try {
- //对输入的内容进行编码,防止中文乱码
- String username = URLEncoder.encode("张三", "UTF-8");
- //对应GET请求,要把请求信息拼接在url后面
- URL url = new URL("http://localhost:8080/day26_server/UrlServer?username="+username+"&password=123");
- //调用url的openConnection()方法,获得连接对象
- HttpURLConnection conn = (HttpURLConnection) url.openConnection();
- //设置HttpURLConnection的属性
- conn.setRequestMethod("GET");
- conn.setReadTimeout(5000);
- conn.setConnectTimeout(5000);
- //只是建立一个连接, 并不会发送真正http请求 (可以不调用)
- conn.connect();
- //通过响应码来判断是否连接成功
- if (conn.getResponseCode() == 200) {
- //获得服务器返回的字节流
- InputStream is = conn.getInputStream();
- //内存输出流,适合数据量比较小的字符串 和 图片
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buf = new byte[1024];
- int len = 0;
- while((len = is.read(buf))!=-1){
- baos.write(buf, 0, len);
- }
- //可使用 toByteArray() 和 toString() 获取数据。
- byte[] result = baos.toByteArray();
- System.out.println(new String(result));
- is.close();
- System.out.println("客户端执行完毕!!");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }