JAVA HttpURLConnection请求异常

public String sendPost(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
String result = “”;
URL realUrl = null;
// URLConnection conn = null;
HttpURLConnection conn= null;
InputStream is = null;
try {
realUrl = new URL(url);
// 打开和URL之间的连接
conn = (HttpURLConnection) realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty(“Accept”, “application/json”);
conn.setRequestProperty(“Content-Type”, “application/json;charset=UTF-8”);
conn.setRequestProperty(“Accept-Language”, “zh-cn”);
conn.setRequestMethod(“POST”);
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setConnectTimeout(60000);
conn.setReadTimeout(60000);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 获取响应码
int statusCode = conn.getResponseCode();

        if (statusCode != 200 && statusCode != 204) {
            // 重点:由于HttpURLConnection发送请求返回500错误,只有状态码,没有具体响应内容,需要调用getErrorStream获取具体响应内容;注意:HttpClient无此问题。
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getErrorStream(), "utf-8"));
            String line = null;
            while ((line = reader.readLine()) != null) {
                result += line;
            }
            reader.close();
        }else {
            // 定义BufferedReader输入流来读取URL的响应
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream(),"UTF-8"));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        }

    } catch (Exception e) {


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

你可能感兴趣的:(Java,java)