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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM