在实际的开发中,经常会使用的使用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;
}
}
以上内容来自于网络,如有侵权联系即删除。
猜你喜欢
发表评论
电子邮件地址不会被公开。 必填项已用*标注