java发送Http请求

时间:2022-03-17 21:08:23
/**
* 发送主要方法,异常捕获
*
*
@param post
*
@param code
*
@return
*/
public static String doHttpRequest(String url, String param) {



PrintWriter out
= null;
BufferedReader in
= null;
String result
= "";
try {
URL realUrl
= new URL(url);
// 打开和URL之间的连接
// URLConnection conn = realUrl.openConnection();
HttpURLConnection connection = (HttpURLConnection)realUrl.openConnection();

connection.addRequestProperty(
"Content-Type", "application/json;charset=UTF-8");
connection.addRequestProperty(
"User-Agent", "mytest");
connection.setConnectTimeout(
60000);
connection.setReadTimeout(
60000);
connection.setRequestMethod(
"POST");
connection.setDoOutput(
true);
connection.getOutputStream().write(param.getBytes(
"utf8"));

// connection.setRequestProperty("Content-Type", "application/json");
int status = connection.getResponseCode();

BufferedReader reader
= new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
StringBuffer message
= new StringBuffer();
while (reader.ready()) {
message.append(reader.readLine());
}
reader.close();
connection.connect();
if (status == 200) {
return message.toString();
}

}
catch (Exception e) {
System.out.println(
"发送 POST 请求出现异常!"+e);
e.printStackTrace();
}
//使用finally块来关闭输出流、输入流
finally{
try{
if(out!=null){
out.close();
}
if(in!=null){
in.close();
}
}
catch(IOException ex){
ex.printStackTrace();
}
}
return result;

}

记:
①  connection.addRequestProperty("Content-Type", "application/json;charset=UTF-8");如果是json数据这一个属性不添加,会让接收方收不到数据。
② 如果json数据以map<"String, object"> 的形式组装,当key对应得value为null的时候,会报错,如果以jsonobject.getbytes()以流的形式返回就不会出现这种问题。