こんにちは、okhttp3 インターセプターで奇妙なエラーが発生しました。追加のヘッダーを追加すると、リクエストはタイムアウトで終了します。同じインターセプトが同じことを行いますが、ヘッダーを追加しない場合、正常に機能します。私のコードはそうです
@Override
public Response intercept(Chain chain) throws IOException {
if (timestamp == null) {
timestamp = DateTime.now();
}
//this is used when user has forgotten his password and therefore we have no password and
// don'T need a login to piranha
if (StringUtils.isEmpty(password) && StringUtils.isEmpty(user)) {
Response response = chain.proceed(chain.request());
return response;
} else {
Request request = chain.request();
RequestBody emptyBody;
Request loginrequest;
Response loginresponse_okhttp;
Request return_request;
emptyBody = RequestBody.create(null, new byte[0]);
loginrequest = new Request.Builder()
.url("https://my-fancy-backend/login")
.method("POST", emptyBody)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("my-fancy-backend-user", user)
.addHeader("my-fancy-backend-user", password)
.build();
try {
if (timestamp != null && DateTime.now().isAfter(timestamp.plusHours(4))) {
timestamp = DateTime.now();
loginresponse_okhttp = client.newCall(loginrequest).execute();
loginresponse = gson.fromJson(loginresponse_okhttp.body().charStream(), LoginResponse.class);
}
if (loginresponse == null) {
timestamp = DateTime.now();
loginresponse_okhttp = client.newCall(loginrequest).execute();
loginresponse = gson.fromJson(loginresponse_okhttp.body().charStream(), LoginResponse.class);
}
} catch (IOException e) {
e.printStackTrace();
return chain.proceed(request);
}
return_request = request.newBuilder().addHeader("o2online ", loginresponse.getTokenId()).build();
return chain.proceed(return_request);
}
}
私が傍受したリクエストは他のサーバーに送られますが、これは何らかの形で問題になりますか? それとも、okhttp3 リクエストに追加のヘッダーを追加する方法が間違っていますか?