Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

java

proxy

ntlm

I am working on a thread java application that hitting a url to send sms messages
the problem is i am behind an NTLM proxy server and i have searched most of the day and tried many solutions but no success the application give the titled error and when i tried to print the error response i have found that its an error page comes from the proxy server

this is the hitting code

System.setProperty("java.net.useSystemProxies", "true");
                    System.setProperty("http.proxyHost", AUTH_PROXY");
                    System.setProperty("http.proxyPort", AUTH_PROXY_PORT);
                    System.setProperty("http.proxyUser", AUTH_USER);
                    System.setProperty("http.proxyPassword", AUTH_PASSWORD);

                    Authenticator.setDefault(
                              new Authenticator() {
                                public PasswordAuthentication getPasswordAuthentication() {
                                  return new PasswordAuthentication(AUTH_USER, AUTH_PASSWORD.toCharArray());
                                }
                              }
                            );

                     URL url = new URL(urlString);

                     HttpURLConnection httpConn =(HttpURLConnection)url.openConnection();
                     httpConn.setReadTimeout(10000);
                     String resp = getResponse(httpConn);
                     logger.info("urlString=" + urlString);
                     logger.info("Response=" + resp);

here i get the respoonse

private String getResponse(HttpURLConnection Conn) throws IOException {


        InputStream is;
        if (Conn.getResponseCode() >= 400) {
            is = Conn.getErrorStream();
        } else {
            is = Conn.getInputStream();
        }


        String response = "";
        byte buff[] = new byte[512];
        int b = 0;
        while ((b = is.read(buff, 0, buff.length)) != -1) {
            response += new String(buff, 0, b);

        }
        is.close();

        return response;
    }

any help is appreciated thanks

like image 211
Dunken Avatar asked Mar 18 '23 20:03

Dunken


1 Answers

After many tries i have realized that the code above is fine and the 400 error that i was getting is from not encoding the URL parameters that could have spaces

just used

URLEncoder.encode(urlParameter,"UTF-8");

for parameters that code have spaces solved the problem

like image 193
Dunken Avatar answered Apr 06 '23 02:04

Dunken