简体   繁体   中英

How to implement HTTP POST method in web proxy through Java

I am trying to make a web proxy for HTTP communication between server and client. The GET method is working fine but I am POST method part is not working. I am sure I have missed out something. I want to know what have I missed or not implemented.

// request from client is handle from here
        while ((inputLine = in.readLine()) != null) {
            try {

                StringTokenizer tok = new StringTokenizer(inputLine);
                tok.nextToken();

            } catch (Exception e) {
                break;
            }

            if (cnt == 0) {
                 System.out.println("inputLine "+inputLine);
                String[] tokens = inputLine.split(" ");
                urlToCall = tokens[1];
                //hum inputline sy URL nikaal rahay hai
                if(tokens[0]=="POST")
                {
                    f=1;
                }

                System.out.println("Request for : " + urlToCall);
            }

            cnt++;
        }

        BufferedReader rd = null;
        try {
            //yaha sy hum ab server ko request send karay gy
            URL url = new URL(urlToCall);
            URLConnection conn = url.openConnection();
            HttpURLConnection huc = (HttpURLConnection) conn;
            conn.setDoInput(true);

            conn.setDoOutput(false);

            // now we will get the response from the server

            if (f == 1) {
                huc.setDoOutput(true);
                huc.setInstanceFollowRedirects(false);
                huc.setRequestMethod("POST");
                huc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                huc.setRequestProperty("charset", "utf-8");
            }

            InputStream is = null;
            if (conn.getContentLength() > 0)
            {
                try {
                    is = conn.getInputStream();
                    rd = new BufferedReader(new InputStreamReader(is));
                } catch (IOException ioe) {
                    System.out.println(
                            "********* IO EXCEPTION **********: " + ioe);
                }
            }

What is the error you are getting on the post? And what is a sample GET request that is being passed into your code?

When I use a simple GET request, the code fails because the urlToCall does not have the host or protocol. The below code worked for me, but I would highly suggest you change your code to not hide the exceptions that are being thrown because they will have important information about what is going wrong with your code.

if (cnt == 1) {
            System.out.println("host: " + inputLine);
            String[] tokens = inputLine.split(" ");
            urlToCall = "HTTP://" + tokens[1] + urlToCall;
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM