2012年5月21日星期一

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

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


TAG: