java通过http get和post请求

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

  1. import java.io.ByteArrayOutputStream;  
  2. import java.io.InputStream;  
  3. import java.net.HttpURLConnection;  
  4. import java.net.URL;  
  5. import java.net.URLEncoder;  
  6.   
  7. public class TestUrlGet {  
  8.     public static void main(String[] args) {  
  9.         try {  
  10.             //对输入的内容进行编码,防止中文乱码  
  11.             String username = URLEncoder.encode("张三""UTF-8");  
  12.               
  13.             //对应GET请求,要把请求信息拼接在url后面  
  14.             URL url = new URL("http://localhost:8080/day26_server/UrlServer?username="+username+"&password=123");  
  15.           
  16.             //调用url的openConnection()方法,获得连接对象  
  17.             HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  18.               
  19.             //设置HttpURLConnection的属性  
  20.             conn.setRequestMethod("GET");  
  21.             conn.setReadTimeout(5000);  
  22.             conn.setConnectTimeout(5000);  
  23.               
  24.             //只是建立一个连接, 并不会发送真正http请求  (可以不调用)  
  25.             conn.connect();  
  26.               
  27.             //通过响应码来判断是否连接成功  
  28.             if (conn.getResponseCode() == 200) {  
  29.                 //获得服务器返回的字节流  
  30.                 InputStream is = conn.getInputStream();  
  31.                   
  32.                 //内存输出流,适合数据量比较小的字符串 和 图片  
  33.                 ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  34.                 byte[] buf = new byte[1024];  
  35.                 int len = 0;  
  36.                 while((len = is.read(buf))!=-1){  
  37.                     baos.write(buf, 0, len);  
  38.                 }  
  39.                 //可使用 toByteArray() 和 toString() 获取数据。  
  40.                 byte[] result = baos.toByteArray();  
  41.                 System.out.println(new String(result));  
  42.                 is.close();  
  43.                 System.out.println("客户端执行完毕!!");  
  44.             }  
  45.         } catch (Exception e) {  
  46.             e.printStackTrace();  
  47.         }  
  48.     }  
  49. }

3.post
  1. import java.io.ByteArrayOutputStream;  
  2. import java.io.InputStream;  
  3. import java.io.OutputStream;  
  4. import java.net.HttpURLConnection;  
  5. import java.net.URL;  
  6. import java.net.URLEncoder;  
  7.   
  8. public class TestUrlPost {  
  9.     public static void main(String[] args) {  
  10.         try {  
  11.             //post请求和get请求的最大不同就是提交请求信息的方式,post是通过把请求信息封装在http请求头中发送出去的  
  12.             URL url = new URL("http://localhost:8080/day26_server/UrlServer");  
  13.               
  14.             //获得连接对象  
  15.             HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  16.               
  17.             //设置属性  
  18.             conn.setRequestMethod("POST");  
  19.             conn.setReadTimeout(5000);  
  20.             conn.setConnectTimeout(5000);  
  21.               
  22.             //设置输入流和输出流,都设置为true  
  23.             conn.setDoOutput(true);  
  24.             conn.setDoInput(true);  
  25.               
  26.             //设置http请求头(可以参照:http://tools.jb51.net/table/http_header)  
  27.             conn.setRequestProperty("Accept""text/plain, text/html");//指定客户端能够接收的内容类型  
  28.             conn.setRequestProperty("Connection""keep-alive"); //http1.1  
  29.               
  30.             //封装要提交的数据  
  31.             String name = URLEncoder.encode("张三""UTF-8");  
  32.             String message = "username="+name+"&password=123";  
  33.               
  34.             //把提交的数据以输出流的形式提交到服务器  
  35.             OutputStream os = conn.getOutputStream();  
  36.             os.write(message.getBytes());  
  37.               
  38.             //通过响应码来判断是否连接成功  
  39.             if (conn.getResponseCode() == 200) {  
  40.                 //获得服务器返回的字节流  
  41.                 InputStream is = conn.getInputStream();  
  42.                   
  43.                 //内存输出流,适合数据量比较小的字符串 和 图片  
  44.                 ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  45.                 byte[] buf = new byte[1024];  
  46.                 int len = 0;  
  47.                 while((len = is.read(buf))!=-1){  
  48.                     baos.write(buf, 0, len);  
  49.                 }  
  50.                 //可使用 toByteArray() 和 toString() 获取数据。  
  51.                 byte[] result = baos.toByteArray();  
  52.                 System.out.println(new String(result));  
  53.                 is.close();  
  54.                 System.out.println("客户端执行完毕!!");  
  55.             }  
  56.         } catch (Exception e) {  
  57.             e.printStackTrace();  
  58.         }  
  59.     }  
  60. }

  1. import java.io.ByteArrayOutputStream;  
  2. import java.io.InputStream;  
  3. import java.net.HttpURLConnection;  
  4. import java.net.URL;  
  5. import java.net.URLEncoder;  
  6.   
  7. public class TestUrlGet {  
  8.     public static void main(String[] args) {  
  9.         try {  
  10.             //对输入的内容进行编码,防止中文乱码  
  11.             String username = URLEncoder.encode("张三""UTF-8");  
  12.               
  13.             //对应GET请求,要把请求信息拼接在url后面  
  14.             URL url = new URL("http://localhost:8080/day26_server/UrlServer?username="+username+"&password=123");  
  15.           
  16.             //调用url的openConnection()方法,获得连接对象  
  17.             HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
  18.               
  19.             //设置HttpURLConnection的属性  
  20.             conn.setRequestMethod("GET");  
  21.             conn.setReadTimeout(5000);  
  22.             conn.setConnectTimeout(5000);  
  23.               
  24.             //只是建立一个连接, 并不会发送真正http请求  (可以不调用)  
  25.             conn.connect();  
  26.               
  27.             //通过响应码来判断是否连接成功  
  28.             if (conn.getResponseCode() == 200) {  
  29.                 //获得服务器返回的字节流  
  30.                 InputStream is = conn.getInputStream();  
  31.                   
  32.                 //内存输出流,适合数据量比较小的字符串 和 图片  
  33.                 ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  34.                 byte[] buf = new byte[1024];  
  35.                 int len = 0;  
  36.                 while((len = is.read(buf))!=-1){  
  37.                     baos.write(buf, 0, len);  
  38.                 }  
  39.                 //可使用 toByteArray() 和 toString() 获取数据。  
  40.                 byte[] result = baos.toByteArray();  
  41.                 System.out.println(new String(result));  
  42.                 is.close();  
  43.                 System.out.println("客户端执行完毕!!");  
  44.             }  
  45.         } catch (Exception e) {  
  46.             e.printStackTrace();  
  47.         }  
  48.     }  
  49. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java可以使用HTTPClient和HttpURLConnection两种方式来实现GET和POST请求。 使用HTTPClient的方法有两个版本,分别是HTTPClient3.1和HTTPClient4.5.5。HTTPClient3.1位于org.apache.commons.httpclient包下,而HTTPClient4.5.5位于org.apache.http.client包下。这两个版本都提供了对远程URL的操作工具包,可以满足工作需求。 另一种方式是使用HttpURLConnection,它是Java的标准请求方式。可以通过创建HttpURLConnection对象来发送GET和POST请求,并获取响应结果。 以下是使用HTTPClient和HttpURLConnection实现GET和POST请求的示例代码: 使用HTTPClient3.1实现GET请求: ```java HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); int statusCode = client.executeMethod(method); String response = method.getResponseBodyAsString(); ``` 使用HTTPClient4.5.5实现GET请求: ```java CloseableHttpClient client = HttpClients.createDefault(); HttpGet request = new HttpGet(url); CloseableHttpResponse response = client.execute(request); String result = EntityUtils.toString(response.getEntity()); ``` 使用HttpURLConnection实现GET请求: ```java URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); int responseCode = connection.getResponseCode(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); ``` 使用HTTPClient4.5.5实现POST请求: ```java CloseableHttpClient client = HttpClients.createDefault(); HttpPost request = new HttpPost(url); List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("param1", "value1")); params.add(new BasicNameValuePair("param2", "value2")); request.setEntity(new UrlEncodedFormEntity(params)); CloseableHttpResponse response = client.execute(request); String result = EntityUtils.toString(response.getEntity()); ``` 使用HttpURLConnection实现POST请求: ```java URL url = new URL("http://example.com"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream()); writer.write("param1=value1&param2=value2"); writer.flush(); int responseCode = connection.getResponseCode(); BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); String line; StringBuilder response = new StringBuilder(); while ((line = reader.readLine()) != null) { response.append(line); } reader.close(); ``` 以上是使用Java实现GET和POST请求的方法,可以根据具体需求选择适合的方式来发送请求并获取响应结果。\[1\]\[2\] #### 引用[.reference_title] - *1* [用Java实现GET,POST请求](https://blog.csdn.net/lianzhang861/article/details/80364549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [JAVA的GET和POST请求实现方式](https://blog.csdn.net/u012513972/article/details/79569888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值