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

一.客户端流程 java

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

代码示例为 urlconnection方法: apache

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 app

代码示例为java servlet方法: post

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

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

 

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的信息 。 spa

在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协议的书籍。感谢

相关文章
相关标签/搜索