用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表单提交,其中包含对跳转的解决。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM