`

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
分享到:
评论

相关推荐

    Android CordovaWebview Add Header Referer

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

    在SpringCloud 使用Security+Oauth2 时候再去使用fegin,发现出现401未授权

    我们在使用spring cloud时如果设置了oauth2授权模式,那么应用服务A再调用服务B时使用Feign请求会出现401授权认证的问题,那么解决办法就是在feign调用请求时获取到assessToken并设置到请求header中就可以解决这个...

    JAVA程序员面试题

    一个 Web 会话可以也经常会跨越多个客户机请求 application是是代表与整个 Web 应用程序相关的对象和属性。这实质上是跨越整个 Web 应用程序,包括多个页面、请求和会话的一个全局作用域 3.Request对象的主要方法...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    nginx配置教程

    '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出...

    基于Postman的API自动化测试

    通过填写URL、header、body等就可以发送一个请求,这对于我们平时做一些简单的测试是够用的。如果你的应用需要用到登录验证,可以通过填写Authorization以满足你的需求。另外也可以使用Chrome浏览器已经登录的cookie...

    java命名规范 开发规范

    2. Action类相应方法使用封装好的HttpClient相关工具类,准备好HTTP请求的相关参数header参数和body参数并以xml的方式提交HTTP请求; 3. 解析该HTTP请求返回值(XML或JSON); 4. 响应结果; 5. 测试; 备注: 开发...

    FRequest:FRequest-一个快速,轻量级且开源的桌面应用程序,用于发出HTTP请求

    FRequest:FRequest-一个快速,轻量级且开源的桌面应用程序,用于发出HTTP请求

    淘宝返利网站源码java-first:第一的

    Services(服务器应用程序,Web Server 通常是C/C++/Java写的)、服务器脚本 PHP ,服务器脚本,Web Framework(服务器脚本框架) 一个普通网站访问的过程: 用户操作浏览器访问,浏览器向服务器发出一个 HTTP 请求...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    HTTP协议详解

    它是一种通用的,无状态(stateless)的协议,除了应用于超文本传输外,它也 可以应用于诸如名称服务器和分布对象管理系统之类的系统,这可以通过扩展它的请求方法,错误代码和报头[47]来实现。HTTP的一个特点是数据...

    front-end_study:javascript学习

    W3 OSI(开放式系统互连参考模型),应用层(Application Layer),应用程序,请求/响应(请求/响应)。 支持TCP(传输控制协议)和HTML / 3支持UDP(用户数据报协议),支持80级。 HTTP的URL:URL(统一资源定位符...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    cachet-url-monitor:用于cachethq.io的URL监视插件

    URL的测试频率以及应用于请求响应的断言是可配置的。 该项目可从PyPI获得: ://pypi.python.org/pypi/cachet-url-monitor 组态 endpoints : - name : Google url : http://www.google.com method : GET header...

    html入门到放弃笔记

    1、编写一对 body 标记,在body标记中,嵌套一对 div标记,在 div 标记中 ,嵌套一对 a 标记,在 a标记中,嵌套一对 b 标记,b标记中,随意编写一些文本 &lt;body&gt; 这是一段测试文本 &lt;/body&gt; ...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    与Java和Perl不同,你不必把头埋进100多页的文档中努力学习才可以写出一个象样的程序。只要了解一些基本的语法和语言特色,你就可以开始你的PHP编码之旅了。之后你在编码过程中如果遇到了什么麻烦,还可以再去翻阅...

    易语言-HP-socket-4.3.1(高性能通信组件)

    2、IHttpClient 和 IHttpAgent 组件改进 HEAD 请求的响应处理方式,应用程序无需在 OnHeadersComplete 事件中返回特殊值 HPR_SKIP_BODY &gt; 其它更新: 1、公共代码包 vc-common-src 版本升级到 v2.3.19 2、OpenSSL ...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    针对不同的行业和应用,这些DTD文件已经建立了通用的元素和标签规则。你不需要自己重新创建,只要在他们的基础上加入你需要的新标识。 当然,如果愿意,你可以创建自己的DTD,它可能和你的文档配合的更加完美。建立...

    jQuery详细教程

    关键点是学习 jQuery 选择器是如何准确地选取您希望应用效果的元素。 jQuery 元素选择器和属性选择器允许您通过标签名、属性名或内容对 HTML 元素进行选择。 选择器允许您对 HTML 元素组或单个元素进行操作。 在 ...

Global site tag (gtag.js) - Google Analytics