gpt4 book ai didi

java - HttpGet 401 状态代码后跟 200 状态代码

转载 作者:行者123 更新时间:2023-12-01 22:30:38 25 4
gpt4 key购买 nike

我在使用 Apachage HttpComponent 访问 Web 服务时遇到了奇怪的行为。

我可以访问服务器日志,当我尝试连接到服务器并执行 httpGet 命令时,我可以在日志中首先看到 401 状态(http 未经授权),然后看到 200(http 正常)。

这 2 次尝试发生在“httpClient.execute(httpGet)”期间

所以我正在寻找如何避免这种行为。有什么想法吗?

这是我当前正在使用的以下代码:

HttpGet httpGet = new HttpGet(this.url + request);

HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters,3000);
HttpConnectionParams.setSoTimeout(httpParameters,5000);

DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
Credentials creds = new UsernamePasswordCredentials(login, password);
httpClient.getCredentialsProvider().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT), creds);

HttpResponse response = httpClient.execute(httpGet);
int status = response.getStatusLine().getStatusCode();
Log.v(this, "Response code status: " + status); // code status = 200 (even if a 401 and then a 200 are visible in the server log).

仅供引用,我正在将此代码用于 Android 应用程序。

最佳答案

这是 HTTP 客户端的常规行为:第一个请求在没有身份验证的情况下发送。如果服务器返回 401,请使用所需的凭据重试。在大多数情况下,网络浏览器会提示您输入用户名和密码。由于您已经在代码中提供了凭据,因此可以继续重试。

您收到的结果是带有凭据的请求后的响应。

关于java - HttpGet 401 状态代码后跟 200 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27818587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com