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 }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp