Java Post 数据请求和接收
这两天在做http服务端请求操作,客户端post数据到服务端后,服务端通过request.getParameter()进行请求,无法读取到数据,搜索了一下发现是因为设置为text/plain模式才导致读取不到数据
- urlConn.setRequestProperty("Content-Type","text/plain; charset=utf-8");
若设置为以下方式,则通过request.getParameter()可以读取到数据
- urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
- enctype的三种编码
form表单中enctype属性可以用来控制对表单数据的发送前的如何进行编码,即在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。默认是application/x-www-form-urlencoded。
multipart/form-data用于发送二进制的文件,其他两种类型不能用于发送文件
text/plain用于发送纯文本内容,不对特殊字符进行编码,一般用于email之类的。
application/x-www-form-urlencoded和text/plain的区别简单讲就是一个发送html内容,一个发送纯文本内容
- application/x-www-form-urlencoded 在发送前编码所有字符(默认)
- multipart/form-data 不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
- text/plain 空格转换为 "+" 加号,但不对特殊字符编码。
- 当定义enctype为application/x-www-form-urlencoded时,使用以下方式接收数据
- request.getParameter(参数名);
- 当定义enctype为text/plain时,使用以下方式接收数据
- // 接收请求数据
- BufferedReader reader = request.getReader();
- char[] buf = new char[512];
- int len = 0;
- StringBuffer contentBuffer = new StringBuffer();
- while ((len = reader.read(buf)) != -1) {
- contentBuffer.append(buf, 0, len);
- }
- String content = contentBuffer.toString();
- if(content == null){
- content = "";
- }
- post 与get
post和get可以通过键值对的方式进行参数传输,服务端通过request.getparameter方式进行请求获取数据。
- 客户端post数据到服务端,服务端接收处理
- public class UrlConnection {
- @SuppressWarnings("finally")
- public static boolean response(String url,String content) {
- String line = "";
- String message = "";
- String returnData = "";
- boolean postState = false;
- BufferedReader bufferedReader = null;
- try {
- URL urlObject = new URL(url);
- HttpURLConnection urlConn = (HttpURLConnection) urlObject.openConnection();
- urlConn.setDoOutput(true);
- /*设定禁用缓存*/
- urlConn.setRequestProperty("Pragma:", "no-cache");
- urlConn.setRequestProperty("Cache-Control", "no-cache");
- /*维持长连接*/
- urlConn.setRequestProperty("Connection", "Keep-Alive");
- /*设置字符集*/
- urlConn.setRequestProperty("Charset", "UTF-8");
- /*设定输出格式为json*/
- urlConn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
- /*设置使用POST的方式发送*/
- urlConn.setRequestMethod("POST");
- /*设置不使用缓存*/
- urlConn.setUseCaches(false);
- /*设置容许输出*/
- urlConn.setDoOutput(true);
- /*设置容许输入*/
- urlConn.setDoInput(true);
- urlConn.connect();
- OutputStreamWriter outStreamWriter = new OutputStreamWriter(urlConn.getOutputStream(),"UTF-8");
- outStreamWriter.write(content);
- outStreamWriter.flush();
- outStreamWriter.close();
- /*若post失败*/
- if((urlConn.getResponseCode() != 200)){
- returnData = "{\"jsonStrStatus\":0,\"processResults\":[]}";
- message = "发送POST失败!"+ "code="+urlConn.getResponseCode() + "," + "失败消息:"+ urlConn.getResponseMessage();
- // 定义BufferedReader输入流来读取URL的响应
- InputStream errorStream = urlConn.getErrorStream();
- if(errorStream != null)
- {
- InputStreamReader inputStreamReader = new InputStreamReader(errorStream,"utf-8");
- bufferedReader = new BufferedReader(inputStreamReader);
- while ((line = bufferedReader.readLine()) != null) {
- message += line;
- }
- inputStreamReader.close();
- }
- errorStream.close();
- System.out.println("发送失败!错误信息为:"+message);
- }else{
- /*发送成功返回发送成功状态*/
- postState = true;
- // 定义BufferedReader输入流来读取URL的响应
- InputStream inputStream = urlConn.getInputStream();
- InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");
- bufferedReader = new BufferedReader(inputStreamReader);
- while ((line = bufferedReader.readLine()) != null) {
- message += line;
- }
- returnData = message;
- inputStream.close();
- inputStreamReader.close();
- System.out.println("发送POST成功!返回内容为:" + message);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }finally{
- try {
- if (bufferedReader != null) {
- bufferedReader.close();
- }
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- return postState;
- }
- }
- /*读取request数据*/
- public static String getRequestData(HttpServletRequest request) throws IOException{
- BufferedReader reader = request.getReader();
- char[] buf = new char[512];
- int len = 0;
- StringBuffer contentBuffer = new StringBuffer();
- while ((len = reader.read(buf)) != -1) {
- contentBuffer.append(buf, 0, len);
- }
- String content = contentBuffer.toString();
- if(content == null){
- content = "";
- }
- return content;
- }
- }
Java Post 数据请求和接收的更多相关文章
- JAVA发送HttpClient请求及接收请求结果
1.写一个HttpRequestUtils工具类,包括post请求和get请求 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2 ...
- JAVA发送HttpClient请求及接收请求结果过程
1.写一个HttpRequestUtils工具类,包括post请求和get请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
- 页面ajax请求传参及java后端数据接收
js ajax请求传参及java后端数据接收 Controller: package com.ysl.PassingParameters.controller; import java.util.Li ...
- java 接口自动化测试之数据请求的简单封装
我们自己用java写接口自动化测试框架或者做个接口自动化测试平台的话,是需要自己进行相关的请求的,因此我们需要简单的封装下httpclient,我新建了一个http工具类,将get方法和post方法进 ...
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装
微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...
- java spring-WebSocket json参数传递与接收
Websocket原理(摘抄) 一.websocket与http WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环 ...
- SpringMVC请求参数接收总结
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- SpringMVC请求参数接收总结(一)
前提 在日常使用SpringMVC进行开发的时候,有可能遇到前端各种类型的请求参数,这里做一次相对全面的总结.SpringMVC中处理控制器参数的接口是HandlerMethodArgumentRes ...
- 2.5万字长文简单总结SpringMVC请求参数接收
这是公众号<Throwable文摘>发布的第22篇原创文章,暂时收录于专辑<架构与实战>.暂定下一篇发布的长文是<图文分析JUC同步器框架>,下一篇发布的短文是&l ...
随机推荐
- 【BZOJ3439】 Kpm的MC密码 (TRIE+主席树)
3439: Kpm的MC密码 Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的...),于是乎,他现在理所当然地忘记 ...
- ASPX在Debug模式下直接link原始CSS而非Bundle后的CSS
由于对CSS做了bundle, debug的时候修改原始css文件不会直接反映到浏览器中, 效率较低. 于是我想在debug的时候直接link原始CSS. 很简单. <% #if DEBUG % ...
- [LeetCode#161] One Edit Distance
Problem: Given two strings S and T, determine if they are both one edit distance apart. General Anal ...
- linux系统目录详解
Linux目录结构包括文件类型和一些重要的文件子目录. linux文件系统的最顶端是/,称为linux的root,所有的目录.文件.设备都在/之下.文件类型linux有四种基本文件系统类型:普通文件. ...
- 【转】关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
原文网址:http://www.cnblogs.com/cywin888/p/3263027.html 刚接触iOS开发的人难免会对苹果的各种证书.配置文件等不甚了解,可能你按照网上的教程一步一步的成 ...
- Gson ------ 实例演习
[本文范围]: 本文并非JSON知识讲解资料,亦非GSON知识讲解资料,而是通过实例让开发人员了解通过Gson如何使Java对象和Json对象进行相互转换. [JSON参考资料]: Json快速入门: ...
- 通过udl文件得到连接字符串
1.新建一个文件,文件名任意,扩展名为udl 2.双击打开这个udl文件 3.点下一步: 4.测试连接成功后点击确定 5.用记事本打开这个udl文件: 连接字符串就出来了
- ShadowGun Deadzone 放出 GM Kit Mod 包
一向在技术上比较开放的 MadFinger 继上次给出 shadowgun 的关卡包之后,这次更加大方的给出了更加完整的关卡的代码,甚至包括服务器:ShadowGun Deadzone GM Kit. ...
- zoj 1221 Risk Flory
博客开了快半年了- -学习编程也快1年半了,觉得空空的不太好看,刚好最近开始练习ACM了,就来做一个简单的ACM学习笔记吧,纪念的第一题zol 1221 Risk 风险游戏(个人觉得是这样翻- -翻译 ...
- Web Service学习笔记
Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...