工作中有时候需要调用外部的接口,通过http方式调用,记录一下这个工具类。
public class HttpUtil {
private static Logger log = LoggerFactory.getLogger(HttpUtil.class);
private final static int CONNECT_TIMEOUT = 50000;
private static final String CONTENT_TYPE = "application/xml";
private static final String DEFAULT_ENCODING = "UTF-8";
/**
* post请求,参数格式设置为xml
* @param urlStr
* @param data
* @return
*/
public static String postData(String urlStr, String data, String contentType) {
BufferedReader reader = null;
try {
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
conn.setConnectTimeout(CONNECT_TIMEOUT);
conn.setReadTimeout(CONNECT_TIMEOUT);
if (contentType != null) {
conn.setRequestProperty("content-type", contentType);
}
OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream(), DEFAULT_ENCODING);
if (data == null) {
writer.write("");
} else {
writer.write(data);
}
writer.flush();
writer.close();
reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),DEFAULT_ENCODING));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
sb.append("\r\n");
}
return sb.toString();
} catch (IOException e) {
e.printStackTrace();
log.error(e.getMessage());
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
log.error(e.getMessage());
}
}
return null;
}
}