Cli*_*ize 14
要防止重定向,你必须配置你的客户端,例如使用OkHttp 2:
private sendRequest() {
OkHttpClient client = new OkHttpClient();
client.setFollowRedirects(false);
connectAdapter = new RestAdapter.Builder()
.setClient(new OkClient(client))
.setEndpoint("http://yourendpoint")
.setLogLevel(RestAdapter.LogLevel.FULL)
.build();
connectAdapter.create(YourRequest.class).sendMyRequest("login","password");
}
Run Code Online (Sandbox Code Playgroud)
使用OKHTTP 3(您可以从@gropapa 阅读此答案):
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.followRedirects(false);
OkHttpClient httpClient = builder.build();
Run Code Online (Sandbox Code Playgroud)
如果帖子很旧的话,这是我对OkHttp 3的回答,只需使用以下构建器
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.followRedirects(false);
OkHttpClient httpClient = builder.build();
Run Code Online (Sandbox Code Playgroud)
在Response对象(我实际上使用Retrofit)中,您将在
response.headers.get("Location")
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
我的情况和你类似。基本上我们需要的只是捕获服务器在重定向之前返回的“Set-Cookie”标头。这是我使用 OkHTTP 处理它的方式:
final OkHttpClient client = new OkHttpClient();
CookieHandler handler = client.getCookieHandler();
CookieManager manager = new CookieManager();
handler.setDefault(manager);
//boilerplate:
RequestBody formData = new FormEncodingBuilder()
.add("req_username", username)
.add("req_password", password).build();
Request request = new Request.Builder().url(LOGIN_URL).post(formData).build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
// print our cookies:
List <HttpCookie> cookies = manager.getCookieStore().getCookies();
for(HttpCookie cookie : cookies) {
Log.v(TAG, cookie.getName() + "=" + cookie.getValue());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9991 次 |
| 最近记录: |