文档章节

客户端通过http协议 post xml型字符串数据到后台工作流程(请指点)

Enjoy前端开发
 Enjoy前端开发
发布于 2013/08/23 11:48
字数 436
阅读 678
收藏 3

一.客户端流程

两种方法:1.通过httpurlconnection  2.通过apache开源的httpclient

代码示例为 urlconnection方法:

StringBuilder responseBuilder = null;
	     BufferedReader reader = null;
	     BufferedWriter wr = null;
	     String post = "<?xml namespace=\"forsun.org\"?>hello";//我在没有post参数的情况下也打开了OutputStreamWriter造成的 server return http response code 500
	    URL url;
	     try {
	         url = new URL("http://localhost:8080/SimpleUploadService/");
	         URLConnection conn = url.openConnection();
	         conn.setDoOutput(true);
	         conn.setConnectTimeout(1000 * 5);
	         if(post != null && post.trim().length() > 0 ){
	        	 wr = new BufferedWriter(new OutputStreamWriter(conn.getOutputStream()));
	        	 wr.write(post);
	        	 wr.flush();
	         }
	 
	        // Get the response
	         reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
	         responseBuilder = new StringBuilder();
	         String line = null;
	         while ((line = reader.readLine()) != null) {
	             responseBuilder.append(line + "\n");
	         }
	         wr.close();
	         reader.close();
	 
	        System.out.println(responseBuilder.toString());
	     } catch (IOException e) {
	         // TODO Auto-generated catch block
	         e.printStackTrace();
	     }

二.服务器流程

服务器可以是两种服务:1.java servlet   2. webservice

代码示例为java servlet方法:

在javaweb工程中,新建一个servlet服务。

在dopost方法中接受客户端传来的参数

 

private void processRequest(HttpServletRequest request,
			HttpServletResponse response) throws ServletException,IOException{
		// TODO Auto-generated method stub
		System.out.println("Access");
		request.setCharacterEncoding("UTF-8");
		//接受 request
		BufferedReader br = request.getReader();
		String line = br.readLine();
		//接受完后 我想要保存文件到upload文件夹
		//响应response
		System.out.println("输出响应");
		response.getWriter().print("message");
		
		
	}

服务器返回了message的信息 。

在web.xml中配置servlet服务

<servlet>
  <servlet-name>UploadServlet</servlet-name>
  <servlet-class>UploadServlet</servlet-class>
 </servlet>
 <servlet-mapping>
  <servlet-name>UploadServlet</servlet-name>
  <url-pattern>/*</url-pattern>
 </servlet-mapping>

 

三.请指点

我在调试服务器程序时候,客户端发送请求后,服务器在进入调试之前,控制台就输出了

System.out.println("Access");

System.out.println("输出响应");

 输出的语句。调试进入后又再一次执行了,有没有人能告诉我这是为什么,也就是http请求和响应得原理是怎么一回事,能不能推荐一些讲解http请求响应的博客,论坛或者深入解析http协议的书籍。感谢

 

© 著作权归作者所有

Enjoy前端开发
粉丝 3
博文 27
码字总数 3417
作品 0
海淀
私信 提问
iOS 网络编程

一、网络编程的基本概念 在网络编程中,有几个必须掌握的基本概念: 客户端(Client):移动应⽤(iOS,Andorid等应⽤) 服务器(Server):为客户端提供服务、提供数据、提供资源的机器 请求(Request)...

从訫开始_倾深爱
2016/09/06
88
0
获取后台服务器数据

概述 Windows8和Windows Phone8提供了用于通过HTTP协议发送和接受网络数据的类。在Windows8中为HttpClient类,Windows Phone中为WebClient和HttpWebRequest类。 Android系统包含两种HTTP Cl...

失足处男的倒霉孩子
2013/12/27
3.5K
0
http协议常用功能整理

本部分内容整理于互联网 HTTP定义: 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种无状态通信协议,它允许将超文本标记语言(HTML...

落叶刀
2016/01/02
80
0
api接口中ajax数据请求与数据返回的小坑

AJAX 可以使网页实现异步更新,XMLHttpRequest 是 AJAX 的基础,大部分浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject),XMLHttpRequest对象基于HTTP协议用于在后台与服务...

daydaydream
2018/06/26
0
0
api接口中ajax数据请求与数据返回的小坑

AJAX 可以使网页实现异步更新,XMLHttpRequest 是 AJAX 的基础,大部分浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject),XMLHttpRequest对象基于HTTP协议用于在后台与服务...

wx599c47c7bdcad
2018/06/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

一套基于SpringBoot+Vue+Shiro 前后端分离 开发的代码生成器

一、前言 最近花了一个月时间完成了一套基于Spring Boot+Vue+Shiro前后端分离的代码生成器,目前项目代码已基本完成 止步传统CRUD,进阶代码优化: 该项目可根据数据库字段动态生成 controll...

郑清
9分钟前
0
0
javascript-十六进制随机颜色

<script> // 编写一个函数,获得一个十六进制的随机颜色的字符串(如#20CD4F) // function randomColor(){ // var r = random(0,255).toString(16); // var g = random(0,255).toString(16......

ACKo
11分钟前
1
0
springBoot +mybatis 出现sql 语句在数据库可以查询到,但是赋值到实体类上就没有的情况?

1.不要老是反复查看自己是否写错了,为啥有的能出来有的出不来? 可以查看配置文件中是否配置全: 如果在application.yml 文件中是如下配置: mybatis: mapper-locations: classpath:mapp...

kuchawyz
24分钟前
1
0
正则表达式

一、RegExp对象 进行验证和查找的API 1、创建对象: (1)用/创建(直接量):var reg=/正则/ig,表达式固定不变时使用 (2)用new创建:var reg=new RegExp(‘正则’,‘ig’),表达式需要...

wytao1995
24分钟前
1
0
实战限流(guava的RateLimiter)

关于限流 常用的限流算法有漏桶算法和令牌桶算法,guava的RateLimiter使用的是令牌桶算法,也就是以固定的频率向桶中放入令牌,例如一秒钟10枚令牌,实际业务在每次响应请求之前都从桶中获取...

程序员欣宸
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部