【问题标题】:Status code of the method方法的状态码
【发布时间】:2011-07-08 12:33:52
【问题描述】:

我正在执行以下“GET”方法的httpclient示例程序。

    import org.apache.commons.httpclient.HttpClient;
    import org.apache.commons.httpclient.methods.GetMethod;
    import org.apache.commons.httpclient.params.HttpMethodParams;

    public class TestMethodStatuscode {
public static void main(String[] args) throws Exception 
{
     HttpClient client = new HttpClient();
     client.getParams().setParameter(HttpMethodParams.USER_AGENT,
     "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)");
     //client.getParams().setCookiePolicy(org.apache.http.client.params.CookiePolicy.BROWSER_COMPATIBILITY);

    GetMethod get = new GetMethod("http://de.mg40.mail.yahoo.com/neo/launch?.rand=80g4u84m26ifl");
    //get_siteurl.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
    client.executeMethod(get);
    System.out.println("Status code: "+get.getStatusCode());
    //System.out.println(get.getResponseBodyAsString());
    get.releaseConnection();
}

}

输出:- 状态码:200

我试图获取的 url 是我在登录yahoo.de 电子邮件帐户的过程中获得的一些 url(登录到yahoo.de 对我不起作用,所以我正在尝试此代码)。如果我启用了wireshark(filter-http或(http.request.method == POST or http.request.method == GET)然后在浏览器中输入这个url,回车,最后我在wireshark中注意到上面url的返回码是302,这意味着它被重定向了。

另外,当我运行我的程序并签入wireshark 时,我看到该方法返回代码302。所以我的问题是为什么它给我200 作为输出而不是302

【问题讨论】:

    标签: java http get httpclient


    【解决方案1】:

    根据documentation

    默认情况下,GetMethods 将遵循来自 http 服务器的重定向请求。可以通过调用 setFollowRedirects(false) 来禁用此行为。

    【讨论】:

      【解决方案2】:

      您可能会遵循设置为 true 的重定向。您可以使用getFollowRedirects() 方法获得此信息。如果返回 true,它将自动跟随重定向。您可以将其设置为 false 以消除该行为。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-29
        • 1970-01-01
        • 1970-01-01
        • 2020-06-17
        • 2019-07-16
        • 1970-01-01
        相关资源
        最近更新 更多