`

java几种http的请求方式(post/get)

    博客分类:
  • java
 
阅读更多

1、采用URLConnection(POST)

 

 public static String sendPost(String url, String param) {
	        PrintWriter out = null;
	        BufferedReader in = null;
	        String result = "";
	        try {
	            URL realUrl = new URL(url);
	            // 打开和URL之间的连接
	            URLConnection conn = realUrl.openConnection();
	            // 设置通用的请求属性
	            conn.setRequestProperty("accept", "*/*");
	            conn.setRequestProperty("connection", "Keep-Alive");
	            conn.setRequestProperty("user-agent",
	                    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
	            // 发送POST请求必须设置如下两行
	            conn.setDoOutput(true);
	            conn.setDoInput(true);
	            // 获取URLConnection对象对应的输出流
	            out = new PrintWriter(conn.getOutputStream());
	            
	            // 发送请求参数
	            out.print(param);
	            // flush输出流的缓冲
	            out.flush();
	            
	            // 定义BufferedReader输入流来读取URL的响应
	            in = new BufferedReader(
	                    new InputStreamReader(conn.getInputStream()));
	            String line;
	            while ((line = in.readLine()) != null) {
	                result += line;
	            }
	        } catch (Exception e) {
	            System.out.println("发送 POST 请求出现异常!"+e);
	            e.printStackTrace();
	        }
	        //使用finally块来关闭输出流、输入流
	        finally{
	            try{
	                if(out!=null){
	                    out.close();
	                }
	                if(in!=null){
	                    in.close();
	                }
	            }
	            catch(IOException ex){
	                ex.printStackTrace();
	            }
	        }
	        return result;
	  }

 

 

2、使用HttpURLConnection(POST)

 

  public static String postTo(String strURL, String params) {  
	        try {  
	            URL url = new URL(strURL);// 创建连接  
	            HttpURLConnection connection = (HttpURLConnection) url  
	                    .openConnection();  
	            connection.setDoOutput(true);  
	            connection.setDoInput(true);  
	            connection.setUseCaches(false);  
	            connection.setInstanceFollowRedirects(true);  
	            connection.setRequestProperty("Connection", "Keep-Alive");
	            connection.setRequestMethod("POST"); // 设置请求方式  
	            connection.setRequestProperty("Accept", "application/text"); // 设置接收数据的格式  
	            connection.setRequestProperty("Content-Type", "application/text"); // 设置发送数据的格式  
	            
	            connection.connect();  
	            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "GBK"); // utf-8编码  
	            out.append(params);  
	            out.flush();  
	            out.close();  
	            // 读取响应  
	            int length = (int) connection.getContentLength();// 获取长度  
	            InputStream is = connection.getInputStream();  
	            if (length != -1) {  
	                byte[] data = new byte[length];  
	                byte[] temp = new byte[512];  
	                int readLen = 0;  
	                int destPos = 0;  
	                while ((readLen = is.read(temp)) > 0) {  
	                    System.arraycopy(temp, 0, data, destPos, readLen);  
	                    destPos += readLen;  
	                }  
	                String result = new String(data, "GBK"); // utf-8编码  
	                System.out.println(result);  
	                return result;  
	            }  
	        } catch (IOException e) {  
	            // TODO Auto-generated catch block  
	            e.printStackTrace();  
	        }  
	        return "error"; // 自定义错误信息  
	    }  

 

 

3、使用HTTPClient(POST), 其中参数为键值对,返回值为字节数组。

	@SuppressWarnings("unchecked")
	public static byte[] doHttpRequest(String host, Map<String, String> params)
			throws IOException {
		byte[] bt = null;
		Map<String, String> map = null == params ? new HashMap<String, String>()
				: params;
		DefaultHttpClient httpclient = new DefaultHttpClient();
		HttpPost httpost = new HttpPost(host);
		List<NameValuePair> nvps = new ArrayList<NameValuePair>();
		Iterator it = map.entrySet().iterator();

		while (it.hasNext()) {
			Map.Entry<String, String> entry = (Entry<String, String>) it.next();
			nvps.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));
		}

		httpost.setEntity(new UrlEncodedFormEntity(nvps, "GBK"));
		HttpResponse response = httpclient.execute(httpost);

		if (200 != response.getStatusLine().getStatusCode()) {
			throw new RuntimeException("http返回状态"
					+ response.getStatusLine().getStatusCode());
		}

		InputStream in = response.getEntity().getContent();
		ByteArrayOutputStream bos = new ByteArrayOutputStream();

		int temp;
		byte[] buf = new byte[1024];
		while ((temp = in.read(buf, 0, buf.length)) != -1) {
			bos.write(buf, 0, temp);
		}

		bt = bos.toByteArray();
		return bt;
	}

 

4、httpclient get请求,返回为String

	public static String getHttpRequestContent(String serialUrl, String encode)
			throws ClientProtocolException, IOException {
		DefaultHttpClient httpclient = new DefaultHttpClient();
		HttpGet httpGet = new HttpGet(serialUrl);
		HttpResponse response = httpclient.execute(httpGet);

		if (200 != response.getStatusLine().getStatusCode()) {
			throw new RuntimeException("http返回状态"
					+ response.getStatusLine().getStatusCode());
		}

		HttpEntity entity = response.getEntity();
		InputStreamReader in = new InputStreamReader(entity.getContent(),
				encode == null ? HTTP.UTF_8 : encode);
		BufferedReader reader = new BufferedReader(in);
		String line = null;
		String content = "";

		while (null != (line = reader.readLine())) {
			content += line;
		}

		in.close();
		reader.close();
		httpclient.getConnectionManager().shutdown();

		return content;
	}

 

分享到:
评论

相关推荐

    后台模拟发送GET和POST请求

    首先,我们来理解GET和POST两种请求方法。GET请求通常用于获取服务器上的资源,它将参数附加到URL中,具有可缓存、可被书签、地址栏可见等特性。POST请求则用于向服务器提交数据,常用于创建或更新资源,其参数包含...

    SpringMVC后台接收请求参数的几种方式Demo

    我们将重点关注GET和POST请求,这两种请求方式在Web开发中最为常见。以下是对每种方式的详细说明: 1. **路径变量(Path Variables)** 在Spring MVC中,我们可以使用`@PathVariable`注解来捕获URL模板中的动态...

    springboot的GET请求和POST请求

    ### Spring Boot 中 GET 请求与 POST...通过以上介绍,我们可以了解到 Spring Boot 中 GET 请求与 POST 请求的具体实现方式及其相关的注解使用方法。这些知识点对于理解和使用 Spring Boot 构建 RESTful API 非常关键。

    Java Spring Controller 获取请求参数的几种方法详解

    这种方式适用于POST请求,同样适用于GET请求: ```java public class UserModel { private String username; private String password; // getters and setters } @RequestMapping("/addUser3") public ...

    tomcat GET请求与POST请求

    Tomcat作为Servlet容器,处理这两种请求的方式略有不同。当客户端发送一个GET或POST请求到Tomcat时,服务器会通过Servlet容器解析请求,然后根据请求方法调用相应的Servlet方法。对于GET请求,Servlet的`doGet()`...

    java实现http请求以及解析json与java对象转换 项目源代码实例

    在Java中,可以通过多种方式实现HTTP请求,例如使用`java.net.URL`和`java.net.HttpURLConnection`类,或者使用Apache HttpClient库。这个项目源代码可能包含了使用这些方法之一的例子,展示如何发送GET、POST以及...

    Java中解决POST和GET请求的中文乱码问题.doc

    在Java Web开发中,POST和GET请求是HTTP协议中最常见的两种数据传输方式。然而,当涉及到中文字符时,由于字符编码的不同可能导致乱码问题。以下将详细解释如何解决Java中处理POST和GET请求时的中文乱码问题。 **...

    httppost httpget 需要的jar包

    在Java编程中,HTTP POST和GET是两种基本的HTTP请求方法,用于客户端向服务器发送数据。在使用这两种方法时,通常需要引入特定的库或jar包来实现HTTP通信。以下是对`httppost`和`httpget`所需jar包的详细解释: 1. ...

    android开发网络请求的几种方式

    本文将详细介绍Android开发中常用的几种网络请求方式,并以GET和POST请求为例进行具体说明。 #### 一、Android网络请求的基础概念 在开始介绍具体的请求方式之前,我们先来了解一些基本概念。 - **HTTP...

    Http post GET网站

    在IT行业中,HTTP(超文本传输协议)是用于在Web上传输数据的基础协议。它定义了客户端(如浏览器)和服务器之间如何...理解这两种请求方法的工作原理及其在不同场景下的适用性,对于任何Web开发者来说都是至关重要的。

    https网络请求,包含get和post形式

    总之,通过Java实现HTTPS网络请求,需要处理SSL连接、配置连接参数并选择GET或POST方式发送数据。在实际开发中,为了增强安全性,应当避免信任所有证书,而是应正确验证服务器证书,遵循标准的SSL/TLS流程。同时,...

    Http学习之使用HttpURLConnection发送post和get请求 android

    接下来,我们将详细讲解如何使用`HttpURLConnection`实现这两种请求。 **发送GET请求** ```java URL url = new URL("http://example.com/api/data"); HttpURLConnection connection = (HttpURLConnection) url....

    狼王-HttpPost请求和JSON解析

    在Java中,处理JSON数据通常有以下几种方式: 1. 使用Gson库:Google提供的Gson库可以方便地将Java对象转换为JSON字符串,反之亦然。只需简单的API调用,就能完成JSON的序列化和反序列化。 2. 使用Jackson库:...

    Spring MVC请求映射常见的三种方式

    本文将详细探讨Spring MVC中常见的三种请求映射方式:基于注解的映射、基于XML配置的映射以及基于Java配置的映射。我们将深入理解每种方式的工作原理,并通过实例来展示其用法。 ### 1. 基于注解的映射 **注解驱动...

    请求的几种情况.txt

    本篇文章将深入解析给定文件中的几种请求情况,包括GET与POST请求、图片请求,以及它们在Servlet环境下的具体应用。 ### GET请求解析 #### 一般格式与特点 GET请求通常用于从服务器检索数据,数据会附在URL之后,...

    Demo HTTP请求工具

    GET和POST是HTTP协议中最常见的两种请求方法: 1. GET请求:GET是最基础的HTTP请求方式,通常用于获取资源。它将数据附在URL后面,可以被浏览器缓存,并且会被记录在浏览器的历史记录中。GET请求的参数限制在URL...

    post参数加密请求.rar

    与GET请求不同,POST请求的数据不包含在URL中,而是放在请求体里,这使得POST请求能传输大量或敏感数据。 在Java中,处理POST请求时的加密通常涉及到以下几个关键技术: 1. **Base64编码**:在"javapostbase64"这...

    GET方式和POST方式.pdf

    GET方式和POST方式是HTTP协议中最常见的两种数据提交方法,它们在Web开发中扮演着重要角色。 1. **数据传输方向** - GET方式主要用来从服务器获取数据,比如加载网页、查询信息等。 - POST方式则是用于向服务器...

    java实现多次HttpURLConnection共享session

    在Java编程中,HTTPURLConnection是Java标准库提供的一种用于处理HTTP连接的类,它允许我们发送HTTP请求并接收响应。然而,HTTP协议本身是无状态的,这意味着每次请求都是独立的,不会记住之前的交互,这对于需要...

    Feign发送Get请求时,采用POJO对象传递参数的最终解决方案.docx

    为了解决上述问题,可以通过以下几种方式来处理: 1. **使用@RequestParam注解**: - 直接在Feign接口的方法参数上添加`@RequestParam`注解,明确指定每个参数名称。这种方式虽然可行,但对于包含大量字段的POJO...

Global site tag (gtag.js) - Google Analytics