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

一.客户端流程

两种方法: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协议的书籍。感谢

 

转载于:https://my.oschina.net/yonguil/blog/156318

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值