客戶端經過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協議的書籍。感謝

相關文章
相關標籤/搜索