`

http请求中的header和body应用

 
阅读更多
/**
	 * 获取httpBody中的请求数据处理后并以JSON格式返回到httpBody中 测试@ReponseBody(有) @RequestBody(有)
	 * 
	 * @param userLoginMap
	 * @param request
	 * @return
	 * @throws IOException
	 */
	@RequestMapping(value = "/user/login1.json", method = RequestMethod.POST, headers = { "content-type=application/json" })
	public @ResponseBody
	String login(@RequestBody Map<String, String> userLoginMap,
			HttpServletRequest request) throws IOException {
		if (userLoginMap.get("account") == null
				|| userLoginMap.get("password") == null) {
			return "{\"code\":-400,\"message\":\"参数错误。\"}";
		}
		JSONObject jo = new JSONObject();
		try {
			jo.put("code", "1").put("message", "登录成功!");
		} catch (JSONException e) {
			e.printStackTrace();
		}
		return jo.toString();
	}

	/**
	 * 获取httpBody中的请求数据处理后并以JSON格式返回到httpBody中 测试@ReponseBody(无) @RequestBody(无)
	 * 
	 * @param userLoginMap
	 * @param request
	 * @return
	 * @throws IOException
	 */
	@RequestMapping(value = "/user/login2.json", method = RequestMethod.POST, headers = { "content-type=application/json" })
	public void login(HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		/**
		 * 获取request body中的信息,用来代替spring中@RequestBody
		 */
		System.out.println(UserInfoTestController.getBodyString(request
				.getReader()));
		/**
		 * 获取request header中的信息
		 */
		UserInfoTestController.getHeaderString(request);
		JSONObject jo = new JSONObject();
		try {
			jo.put("code", "1").put("message", "登录成功!");
		} catch (JSONException e) {
			e.printStackTrace();
		}
		/**
		 * 返回头信息到body中,用来代替@ResponseBody
		 */
		response.setContentType("application/json; charset=UTF-8");
		response.getWriter().print(jo.toString());
	}

	/**
	 * 获取http请求中body部分的信息,用来代替spring中@RequestBody
	 * 
	 * @param br
	 * @return
	 */
	public static String getBodyString(BufferedReader br) {
		String inputLine;
		String str = "";
		try {
			while ((inputLine = br.readLine()) != null) {
				str += inputLine;
			}
			br.close();
		} catch (IOException e) {
			System.out.println("IOException: " + e);
		}
		return str;
	}

	/**
	 * 获取http请求中header中的参数
	 * 
	 * @param request
	 */
	public static void getHeaderString(HttpServletRequest request) {
		Enumeration<String> enu = request.getHeaderNames();
		while (enu.hasMoreElements()) {// 以此取出头信息
			String headerName = (String) enu.nextElement();
			String headerValue = request.getHeader(headerName);// 取出头信息内容
			System.out.println(headerName + ":" + headerValue);
		}
	}

 模拟http请求:

 

HttpClient httpClient = new HttpClient();
		StringRequestEntity requestEntity = new StringRequestEntity(
				"{\"account\":\"zzstxx\",\"password\":\"123456\",\"clientType\":\"3\"}",
				"application/json", "UTF-8");
		PostMethod postMethod = new PostMethod(
				"http://127.0.0.1:81/user/login2.json");
		postMethod.setRequestEntity(requestEntity);
		System.out.println(postMethod.getURI());
		int statusCode = httpClient.executeMethod(postMethod);
		System.out.println("JSON:" + postMethod.getResponseBodyAsString());
		System.out.println("获取的最终状态为:" + statusCode);

 

DefaultHttpClient httpClient = new DefaultHttpClient();
        String url = "http://127.0.0.1:81/user/login2.json";
        HttpPost httpPost = new HttpPost(url);
        // 设置请求的header参数
        httpPost.addHeader("AppKey", "94kid09c9ig9k1loimjg012345123456");
        httpPost.addHeader("Content-Type", "application/json;charset=utf-8");
        // 设置请求的body参数
        List<NameValuePair> nvps = new ArrayList<NameValuePair>();
        nvps.add(new BasicNameValuePair("accid", "helloworld"));
        httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
        // 执行请求
        HttpResponse response = httpClient.execute(httpPost);
        // 打印执行结果
        System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));

 

  • 大小: 44.3 KB
  • 大小: 41.5 KB
  • 大小: 29.5 KB
  • 大小: 66.6 KB
  • 大小: 43.2 KB
分享到:
评论

相关推荐

    java获取http请求的Header和Body的简单方法

    本文将详细介绍如何使用Java从HTTP请求中获取Header和Body。 首先,让我们了解HTTP请求的基本结构。一个HTTP请求由以下几部分组成: 1. 请求行(Request Line):包括HTTP方法(GET、POST等)、URL和HTTP版本。 2....

    VB发送HTTP请求

    在VB(Visual Basic)编程环境中,发送HTTP请求是一项常见的任务,尤其在开发Web应用程序或集成API接口时。本文将深入探讨如何使用VB实现这一功能,同时也会涉及网络中的一些基本制式转换。 首先,让我们理解HTTP...

    java读取http请求中的body实例代码

    HTTP请求由多个部分组成,包括请求行、请求头(Header)和请求体(Body)。在本实例中,我们将关注如何读取HTTP请求的Body部分。下面将详细解释相关知识点。 1. **HTTP请求结构** - **请求行**:包含了请求方法...

    kettle抽取http请求,发送json参数.docx

    第五步:使用 REST Client 发送 http 请求,参数 Body field:param_json 是在上一个步骤中生成的 在这个步骤中,我们使用 REST Client 将json参数发送到目标系统中。 第六步:通过 jsonpath 获取 result 中的数据 ...

    Golang 发送http请求时设置header的实现

    在Golang中,发送HTTP请求并设置Header是常见的任务,特别是在进行网络爬虫、API调用或者模拟用户行为时。以下将详细介绍如何在Golang中实现这个功能。 首先,我们需要导入必要的包,包括`fmt`用于输出,`io/ioutil...

    http请求方法的概述及应用.pdf

    - **概述**:与GET方法类似,但服务器在响应中只返回首部(header)信息,不返回实体的主体部分(body)。 - **应用**:常用于在不获取资源内容的情况下,检查资源的存在性、头部信息等。 6. **OPTIONS方法**: ...

    http请求和响应格式

    C++和STL在Http请求和响应格式中的应用: 在C++中,开发人员可以使用STL库来处理Http请求和响应格式。例如,使用std::string来处理请求体和响应体的文本数据,使用std::map来处理请求头和响应头的键值对。同时,C++...

    Delphi的SOAP Header问题

    SOAP消息由四个主要部分组成:信封(Envelope)、头(Header)、体(Body)和尾注(Fault)。其中,Header部分可以包含各种元数据,如身份验证、事务处理和路由信息等,这些元数据对消息的处理至关重要。 ### ...

    自己实现的Json和简单HTTP请求(C++ Builder 平台)

    本项目涉及的主题是“自己实现的Json和简单HTTP请求”,这在现代网络编程中是非常基础且重要的技能。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,而HTTP(HyperText Transfer Protocol)则是...

    http请求提交类工具类

    在工具类中,通常会提供两个方法分别处理这两种请求,例如`sendGetRequest(url, params)`和`sendPostRequest(url, params, requestBody)`。 2. 请求头与请求体:HTTP请求由请求行(包含方法、URL和协议版本)、请求...

    通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求

    ### 通过ORACLE的UTL_HTTP工具包发送包含POST参数的请求 #### 概述 在Oracle环境中,经常需要与外部系统进行交互,特别是在需要从Web服务器获取数据或向其发送数据的情况下。`UTL_HTTP`是Oracle提供的一款强大工具...

    Android应用源码之(遍历Body)-IT计算机-毕业设计.zip

    本项目是一个关于Android应用源码的示例,特别关注于如何遍历和解析HTTP请求或响应中的Body部分。这个毕业设计旨在帮助学生深入理解Android应用的网络通信机制,以及如何有效地处理接收到的数据。 1. **Android网络...

    模拟HTTP请求-httpdebug

    在IT行业中,HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。它是一个基于请求与响应模式的、无状态的、应用层协议。当我们需要测试、调试或者...

    【Delphi】http post请求 webservices接口

    要构建SOAP请求,你需要创建一个XML字符串,包含SOAP Envelope、Header和Body。Body部分通常包含Web服务的调用方法和参数。例如,如果你有一个名为`HelloWorld`的Web服务方法,参数为`name`,那么XML可能如下所示: ...

    HTTP 请求报头详解

    HTTP 请求报头是 HTTP 协议中的一种重要机制,它允许客户端和服务器之间进行信息交换。报头字段可以分为四类:general-header、request-header、response-header 和 entity-header。 首先,general-header 字段是 ...

    Android CordovaWebview Add Header Referer

    本代码是处理android hybrid混合应用,遇到的webview 拦截 header referer 问题的解决。 场景:angular $HTTP 或者js的http请求或者...webview成功拦截get 、post、delete请求,添加header,referer以及body 参数体。。

    C++Http上传文件到web服务器,解决中文参数乱码

    在发送请求之前,将步骤2中构建的请求头和请求体附加到连接对象。 4. **处理响应**:接收服务器响应后,也要注意解码。同样,确保按照服务器返回的Content-Type来解码响应内容。 在提供的`HeaderCode.h`和`main....

    java httpClient status 400错误的Header中字符不合法(csdn)————程序.pdf

    2. 当遇到HTTP 400错误,要检查请求的结构,包括URL、Header和Body,特别是自定义的Header。 3. 注意HTTP协议对Header的限制,避免在Header中放入非ASCII字符,尤其是中文或其他非西方语言。 4. 对于第三方服务如...

    数据抽取-Kettl动态参数调用HTTP、POST接口

    HTTP协议是互联网上应用最为广泛的一种网络协议,而POST是HTTP协议中的一个请求方法,常用于向服务器发送数据,例如提交表单或者上传文件。在Kettle中,我们可以通过Job或Transformation中的"HTTP"组件来实现HTTP...

Global site tag (gtag.js) - Google Analytics