在实际的开发中,经常会使用的使用Java发送http请求访问远程服务器的URL接口,前段时间正好项目中出现了短信接口的调用就是这么一个需要Java访问远端URL,而且必须是post方法提交的请求,现在整理了一下,把代码分享并且备忘,在下面的代码中,把链接地址和相关的参数都定义成了class的private属性了,实际使用中,完全可以作为方法的参数传入,这个就要看具体的需求了。
package com.csyor.test; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; /** * * java模拟表单提交请求远端URL * * @author Csyor * */ public class HttpRequest { private String requestURL = "url";// 请求的URL private String param1 = "param1";// 参数1 private String param2 = "param2";// 参数2 private String param3 = "param3";// 参数3 // 更多参数... public String request() throws UnsupportedEncodingException { String result = null;// 返回结果 InputStream inStream = null; ByteArrayOutputStream outStream = null; byte[] data = null; try { URL url = new URL(requestURL);// 请求的URL // 打开连接 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("POST");// 提交模式为post conn.setDoOutput(true);// 是否输入参数 // 下面进行拼接参数 StringBuffer params = new StringBuffer(); // 表单参数与get形式一样 params.append("param1").append("=").append(param1.trim()).append("&"). append("param2").append("=").append(param2.trim()).append("&"). append("param3").append("=").append(param3.trim()); // 可以添加更的参数,每个参数之间使用“&”分开 byte[] bypes = params.toString().getBytes();// 把参数转换成二进制 conn.getOutputStream().write(bypes);// 输入参数 inStream = conn.getInputStream(); outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } data = outStream.toByteArray();// 网页的二进制数据 result = new String(data, "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { outStream.close(); inStream.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } }
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注