一.客戶端流程 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>
三.請指點
我在調試服務器程序時候,客戶端發送請求後,服務器在進入調試以前,控制檯就輸出了
System.out.println("Access");
System.out.println("輸出響應");
輸出的語句。調試進入後又再一次執行了,有沒有人能告訴我這是爲何,也就是http請求和響應得原理是怎麼一回事,能不能推薦一些講解http請求響應的博客,論壇或者深刻解析http協議的書籍。感謝