Kian
Kian

Reputation: 221

Sending special characters using HttpURLConnection in Java

I have a web service and I want to invoke that with "application/x-www-form-urlencoded" content type. The request sometimes contains special characters such as + * - and .... The problem is that destination web service doesn't receive the request perfectly. It receives something like this: "////////////////w==" almost all characters are turned to / . What is the problem?

Here is my code:

        URL url = new URL("a-web-service-url");
        HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
        httpURLConnection.setDoInput(true);
        httpURLConnection.setDoOutput(true);
        httpURLConnection.setUseCaches(false);
        httpURLConnection.setRequestMethod("POST");
        httpURLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(httpURLConnection.getOutputStream(), "UTF-8");
        outputStreamWriter.write("test=/-+*=!@#$%^&*()_");
        outputStreamWriter.flush();
        InputStream inputStream = httpURLConnection.getInputStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "UTF-8");
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

        StringBuilder stringBuilder;
        String line;
        for (stringBuilder = new StringBuilder(); (line = bufferedReader.readLine()) != null; stringBuilder = stringBuilder.append(line)) {
            ;
        }

        bufferedReader.close();
        httpURLConnection.disconnect();
        String response = stringBuilder.toString().trim();

The web service receives:

test=////////////////w==

Upvotes: 1

Views: 1928

Answers (1)

Sahal
Sahal

Reputation: 298

Use URLEncoder to encode the string before sending.

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

In this case it will be

outputStreamWriter.write(URLEncoder.encode("test=/-+*=!@#$%^&*()_", "UTF-8" ));

Upvotes: 2

Related Questions