http编程系列3:http协议POST方式提交数据并返回结果
来源:互联网 发布:ug8.0编程图文 编辑:程序博客网 时间:2024/04/29 05:23
使用POST方式提交数据是向服务器提出请求的第二种方式,下面我们将使用方法分享给大家。
这个例子实现的是提交登录的用户名和密码,返回登录是否成功。
整体思路:新建一个web工程,在前端写一个登录界面;在doGet方法中调用doPost方法,在doPost方法中,设置请求和返回的格式,获取用户名和密码两个参数,根据参数是否正确返回登录成功或失败;新建一个java工程,在里面定义一个网址字符串,赋值为web项目中的LoginAction位置,使用这个网址实例化一个URL对象,定义一个changeInputStream方法,在这个方法中定义一个ByteArrayOutputStream对象,把InputStream对象的数据写入到ByteArrayOutputStream对象并转换成字符串的形式返回;定义一个sendPostMessage方法,在这个方法中定义一个字符串缓冲区,如果参数不为空的话,设置参数为键值对的形式并输出,用URL对象实例化一个HttpURLConnection对象,并设置它的超时时间、请求方式、从服务器读取数据、文本类型、长度,获取上传信息,获取输出流,把上传信息写入输出流,关闭输出流,获取服务器的响应码,如果请求完成的话调用changeInputStream方法将返回结果转换为字符串并返回。这样就实现了向web服务器发送请求数据并返回相应的结果。
index.jsp文件:
<form name="form1" method="post" action="<%=path %>/servlet/LoginAction"> 用户名:<input type="text" name="username" value=""/><br/> 密 码:<input type="password" name="password" value="" /><br/> <input type="submit" name="submit" value="提交表单" /> <form/>LoginAction.java文件:
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {this.doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();String username=request.getParameter("username");String password=request.getParameter("password");System.out.println("username:"+username);System.out.println("password:"+password);if(username.equals("admin")&&password.equals("123")){//表示服务器端返回结果out.print("Login is successed!!!");}else{out.print("Login is failled!!!");}out.flush();out.close();}
HttpUtils.java文件:
public class HttpUtils {private static String PATH="http://172.21.75.194:8080/myhttp/servlet/LoginAction";private static URL url;public HttpUtils() {}static {try {url=new URL(PATH);} catch (MalformedURLException e) {e.printStackTrace();}}//params填写的url参数,encode字节编码public static String sendPostMessage(Map<String, String> params,String encode){//作为StringBuffer初始化字符串StringBuffer buffer=new StringBuffer();//请求体就在缓冲区中try {if(params!=null&&!params.isEmpty()){for(Map.Entry<String, String> entry:params.entrySet()){//使用强循环buffer.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(),encode)).append("&");}//删除掉最后一个符号&buffer.deleteCharAt(buffer.length()-1);}System.out.println("-->"+buffer.toString());//有时的bug就是按提示敲出来的一个类,多一个s就不行啦。注意按提示敲出来的类的书写细节。HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection();urlConnection.setConnectTimeout(3000);urlConnection.setRequestMethod("POST");urlConnection.setDoInput(true);//表示从服务器获取数据urlConnection.setDoOutput(true);//表示向服务器写数据//获得上传信息的字节大小以及长度byte[] mydata=buffer.toString().getBytes();//表示设置请求体的类型是文本类型、设置请求体的长度urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");urlConnection.setRequestProperty("Content-Length", String.valueOf(mydata.length));//获得输出流,向服务器输出数据OutputStream outputStream=urlConnection.getOutputStream();outputStream.write(mydata,0,mydata.length);outputStream.close();//获得服务器响应的结果和状态码int responseCode=urlConnection.getResponseCode();if(responseCode==200){return changeInputStream(urlConnection.getInputStream(),encode);}} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return "";} //将一个输入流转换成指定编码的字符串private static String changeInputStream(InputStream inputStream, String encode) {ByteArrayOutputStream outputStream=new ByteArrayOutputStream();byte[] data=new byte[1024];int len=0;String result="";if(inputStream!=null){try {while ((len=inputStream.read(data))!=-1) {outputStream.write(data, 0, len);}result=new String(outputStream.toByteArray(),encode);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return result;}public static void main(String[] args) {Map<String, String> params=new HashMap<String,String>();params.put("username", "admin");params.put("password", "123");String result=HttpUtils.sendPostMessage(params, "utf-8");System.out.println("result:"+result);}}
0 0
- http编程系列3:http协议POST方式提交数据并返回结果
- HTTP协议post请求返回json数据
- http使用Post方式进行提交数据
- http使用post方式进行提交数据
- http post提交数据
- http post提交数据
- http协议从客户端提交数据给服务器并返回数据
- Android之使用HTTP协议的Get/Post方式向服务器提交数据
- Android之使用HTTP协议的Get/Post方式向服务器提交数据
- Android之使用HTTP协议的Get/Post方式向服务器提交数据
- 解析HTTP POST方式请求的xml数据、本地XML文件数据, 并返回JSON字符串
- Android 如何用HttpClient 以Post方式提交数据并添加http头信息
- Android 用HttpClient 以Post方式提交数据并添加http头信息
- Android 如何用HttpClient 以Post方式提交数据并添加http头信息
- Android 如何用HttpClient 以Post方式提交数据并添加http头信息
- Android 如何用HttpClient 以Post方式提交数据并添加http头信息
- HTTP协议提交数据
- 网络编程(二):http的get和post协议向服务器提交数据
- 有多少个斐波那契子数列(微软笔试题)
- SQL Server 检测到基于一致性的逻辑 I/O 错误 pageid 不正确
- 关于iOS9适配中出现的问题
- 内存泄漏及常见的解决办法
- JavaBean 属性命名规范特例
- http编程系列3:http协议POST方式提交数据并返回结果
- IOS应用通过UIWEBVIEW实现与JS交互
- Set和List 的关系与区别
- 九种破解Windows XP登录密码的方法
- wordpress 迁移
- Spring issue checking links
- 修改网卡名称
- zookeeper入门与实战
- Alex 的 Hadoop 菜鸟教程: 第7课 Sqoop2 导入教程