java实现http协议发送和接收数据

  1 public void sendMessage() throws Exception {
  2        System.out.println("调用servlet开始=================");
  3        StringBuffer sendStr = new StringBuffer();
  4        sendStr.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
  5        sendStr.append("<report_data>");
  6        sendStr.append("<request_req>953943547334</request_req>");
  7        sendStr.append("<request_time>2012040211394324</request_time>");
  8        sendStr.append("<request_param>");
  9        sendStr.append("<query_month>201203</query_month>");
 10        sendStr.append("</request_param>");
 11        sendStr.append("</report_data>");
 12   
 13        BufferedReader reader = null;
 14   
 15        try {
 16            String strMessage = "";
 17            StringBuffer buffer = new StringBuffer();
 18   
 19            // 接报文的地址
 20            URL uploadServlet = new URL(
 21                   "http://localhost:9090/TestTransfers");
 22   
 23            HttpURLConnection servletConnection = (HttpURLConnection) uploadServlet
 24                   .openConnection();
 25            // 设置连接参数
 26            servletConnection.setRequestMethod("POST");
 27            servletConnection.setDoOutput(true);
 28            servletConnection.setDoInput(true);
 29            servletConnection.setAllowUserInteraction(true);
 30   
 31            // 开启流,写入XML数据
 32            OutputStream output = servletConnection.getOutputStream();
 33            System.out.println("发送的报文:");
 34            System.out.println(sendStr.toString());
 35   
 36            output.write(sendStr.toString().getBytes());
 37            output.flush();
 38            output.close();
 39   
 40            // 获取返回的数据
 41            InputStream inputStream = servletConnection.getInputStream();
 42            reader = new BufferedReader(new InputStreamReader(inputStream));
 43            while ((strMessage = reader.readLine()) != null) {
 44               buffer.append(strMessage);
 45            }
 46   
 47            System.out.println("接收返回值:" + buffer);
 48   
 49        } catch (java.net.ConnectException e) {
 50            throw new Exception();
 51        } finally {
 52            if (reader != null) {
 53               reader.close();
 54            }
 55   
 56        }
 57     }
 58 1
 59 2
 60 3
 61 4
 62 5
 63 6
 64 7
 65 8
 66 9
 67 10
 68 11
 69 12
 70 13
 71 14
 72 15
 73 16
 74 17
 75 18
 76 19
 77 20
 78 21
 79 22
 80 23
 81 24
 82 25
 83 26
 84 27
 85 28
 86 29
 87 30
 88 31
 89 32
 90 33
 91 34
 92 35
 93 36
 94 37
 95 38
 96 39
 97 40
 98 41
 99 42
100 43
101 44
102 45
103 46
104 47
105 48
106 49
107 50
108 51
109 52
110 53
111 54
112 55
113 56
114 57
115 58
116 59
117 60
118 61
119 62
120 63
121 64
122 65
123 66
124 67
125 public class TestTransfers extends HttpServlet {
126   
127     private static final long serialVersionUID = 1L;
128   
129     protected void doGet(HttpServletRequest request,
130            HttpServletResponse response) throws ServletException, IOException {
131     }
132   
133     protected void doPost(HttpServletRequest request,
134            HttpServletResponse response) throws ServletException, IOException {
135   
136        //判断请求报文是否来自代维系统的ip地址
137        String ip = request.getRemoteHost();
138  
139 // 获取收到的报文
140         BufferedReader reader = request.getReader();
141          String line = "";
142         StringBuffer inputString = new StringBuffer();
143         while ((line = reader.readLine()) != null) {
144         inputString.append(line);
145         }
146          
147        //如有必要,可以在报文中增加其他验证和加密的参数
148        //解析获取到的报文,根据ip地址、其他验证、加密等等来判断请求报文的服务器是否有权限
149        
150        //如果请求验证合格,则根据请求的参数装配返回的报文
151   
152        // 要返回的报文
153        StringBuffer resultBuffer = new StringBuffer();
154        resultBuffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
155        resultBuffer.append("<report_data>");
156        resultBuffer.append("<respon_req>953947334</respon_req>");
157        resultBuffer.append("<respon_time>20120402113943</respon_time>");
158        resultBuffer.append("<result>");
159        resultBuffer.append("<id>0000</id>");
160        resultBuffer.append("<comment>成功</comment>");
161        resultBuffer.append("</result>");
162        resultBuffer.append("<items>");
163        resultBuffer.append("<item>");
164        resultBuffer.append("<county>长治县</county>");
165        resultBuffer.append("<company>铁通</company>");
166        resultBuffer.append("<speciality>线路</speciality>");
167        resultBuffer.append("<personnel>王加和</personnel>");
168        resultBuffer.append("<begin_time>20120301000000</begin_time>");
169        resultBuffer.append("<end_time>20120331235959</end_time>");
170        resultBuffer.append("<plan_quantity>50</plan_quantity>");
171        resultBuffer.append("<checkout_quantity>40</checkout_quantity>");
172        resultBuffer.append("<patrol_rate>0.80</patrol_rate>");
173        resultBuffer.append("</item>");
174        //......
175        //......
176        //......
177        //循环组装响应的报文
178        
179        resultBuffer.append("</items>");
180        resultBuffer.append("</report_data>");
181   
182        // 设置发送报文的格式
183        response.setContentType("text/xml");
184        response.setCharacterEncoding("UTF-8");
185   
186        PrintWriter out = response.getWriter();
187        out.println(resultBuffer.toString());
188        out.flush();
189        out.close();
190     }
191 }

 

posted @ 2015-10-31 09:11  flay  阅读(6515)  评论(0编辑  收藏  举报