用Java模拟一个Post表单提交(302和301)

public String getPostResponse(String url, Map parmMap)

    {

        String response = null;

        PostMethod post = new PostMethod(url);

        HttpClient client = new HttpClient();



        Iterator it = parmMap.entrySet().iterator();

        NameValuePair[] param = new NameValuePair[parmMap.size()];

        int i = 0;

        while (it.hasNext())

        {

            Entry parmEntry = (Entry) it.next();

            param[i++] = new NameValuePair((String) parmEntry.getKey(), (String) parmEntry.getValue());

        }



        post.setRequestBody(param);



        try

        {

            int statusCode = client.executeMethod(post);

            if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY)

            {

                Header locationHeader = post.getResponseHeader("location");

                String location = null;

                if (locationHeader != null)

                {

                    location = locationHeader.getValue();

                    response = this.getPostResponse(location, param);//用跳转后的页面重新请求。   

                }

            }

            else if(statusCode == HttpStatus.SC_OK)

            {

                response= post.getResponseBodyAsString();

            }

        }

        catch (IOException ex)

        {

        }

        finally

        {

            post.releaseConnection();

        }

        return response;

    }

    

    public String getPostResponse(String url, NameValuePair[] param)

    {

        String response = null;

        PostMethod post = new PostMethod(url);

        HttpClient client = new HttpClient();



        post.setRequestBody(param);



        try

        {

            int statusCode = client.executeMethod(post);

            if (statusCode == HttpStatus.SC_MOVED_PERMANENTLY || statusCode == HttpStatus.SC_MOVED_TEMPORARILY)

            {

                Header locationHeader = post.getResponseHeader("location");

                String location = null;

                if (locationHeader != null)

                {

                    location = locationHeader.getValue();

                    response = this.getPostResponse(location, param);//用跳转后的页面重新请求。   

                }

            }

            else if(statusCode == HttpStatus.SC_OK)

            {

                response= post.getResponseBodyAsString();

            }

        }

        catch (IOException ex)

        {

        }

        finally

        {

            post.releaseConnection();

        }

        return response;

    }

以上是java模拟一个Post表单提交,其中包含对跳转的解决。

你可能感兴趣的:(java)