Http接口发送请求
public static String appFun(String jsonParam, String url) {
PrintWriter out = null;
BufferedReader in = null;
OutputStreamWriter outs1 = null;
String result = "";
int code = 0;
try {
URL realUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestMethod("POST");
// 设置鉴权信息:Authorization: Basic MESCONN:Chit2012
//con.setRequestProperty("Authorization", "Basic TUVTQ09OTiUzQUNoaXQyMDEy");
String userPassword = "MESCONN" + ":" + "Chit2012";
String encodingUserPass = new sun.misc.BASE64Encoder().encode(userPassword.getBytes());
conn.setRequestProperty("Authorization", "Basic "+encodingUserPass);
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
conn.setRequestProperty("Content-Type", "application/json");
// 设置是否向httpUrlConnection输出,设置是否从httpUrlConnection读入,此外发送post请求必须设置这两个最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的
// 不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。
// 此处为post请求 故设为true 默认为 false
conn.setDoOutput(true);
conn.setDoInput(true);
outs1 = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数即数据
outs1.write(jsonParam);
// 缓冲数据
outs1.flush();
code = conn.getResponseCode();
InputStream is = null;
outs1.write(jsonParam);
outs1.flush();
is = conn.getInputStream();
// 构造一个字符流缓存
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String str = "";
while ((str = br.readLine()) != null) {
is.close();
// 断开连接,最好写上,disconnect是在底层tcp
// socket链接空闲时才切断。如果正在被其他线程使用就不切断。固定多线程的话,如果不disconnect,链接会增多,直到收发不出信息。写上disconnect后正常一些。
conn.disconnect();
result = str;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
if (outs1 != null) {
outs1.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}