我正在执行以下“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
我想要获取的网址是我在登录yahoo.de
电子邮件帐户的过程中获得的一些网址(登录yahoo.de
对我不起作用,所以尝试此代码)。如果我启用wireshark(filter-http或(http.request.method == POST or http.request.method == GET)
然后在浏览器中键入此url,请按Enter键,最后我在wireshark中注意到上面url的返回码是302
,这意味着它被重定向。
当我运行程序并检查wireshark时,我看到该方法返回代码302
。所以我的问题是为什么它将200
作为输出状态代码而不是302
给我?
答案 0 :(得分:2)
默认情况下,GetMethods将遵循来自http服务器的重定向请求。可以通过调用setFollowRedirects(false)来禁用此行为。
答案 1 :(得分:1)
您可能会将重定向设置为true。您可以使用getFollowRedirects()
方法获取此信息。如果返回true,它将自动跟随重定向。您可以将其设置为false以删除该行为。