Java HttpURLConnection调用远程服务器并返回500状态

时间:2018-10-23 11:53:22

标签: java httpurlconnection http-status-code-500

我想使用HttpURLConnection调用远程服务器,这是我的功能:

public String invokeAwvsServer(String api, String param, String method){
    System.out.println(api+param);
    BufferedReader reader = null;
    HttpURLConnection connection = null;
    OutputStreamWriter out = null;
    try {
        URL url = new URL(api);
        connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setUseCaches(false);
        connection.setInstanceFollowRedirects(true);
        connection.setRequestMethod(method); 
        connection.setRequestProperty("Content-Type", "application/json"); 
        connection.setRequestProperty("X-Auth", apiKey);
        connection.connect();

        if(method.equalsIgnoreCase("POST")){
            out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); 
            out.append(param);
            out.flush();
        }
        reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
        String line;
        StringBuffer res = new StringBuffer();
        while ((line = reader.readLine()) != null) {
            res.append(line);
        }
        return res.toString();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if(reader != null){
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if(connection != null){
            connection.disconnect();
        }
        if(out != null){
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    return "error"; 

}

我在自己的类中使用了此函数,并且运行良好,但是如果在其他类中调用它,则远程服务器将返回500状态代码,并且JVM会引发异常,例如:

java.io.IOException: Server returned HTTP response code: 500 for URL:...

原因是什么?非常感谢:)

0 个答案:

没有答案