用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