一.客户端流程 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协议的书籍。感谢