特定の URL にアクセスしようとしています
DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(new AuthScope("abc.com", 443),
new UsernamePasswordCredentials("user", "Passwd"));
HTTPHelper http = new HTTPHelper(httpclient);
http.get("http://abc.com/**aaa**/w/api.php?param=timestamp%7Cuser&format=xml");
ここで %7C= |
内部的に次のURLにリダイレクトしています
http://abc.com/**bbb**/w/api.php?param=timestamp%257Cuser&format=xml
そのため、正しい出力を取得できません...
| ==>%7C
%==> %25
%7C == %257C
クエリをしたいのですtimestamp|user
が、循環リダイレクトのtimestamp%7Cuser
ため、これを回避する方法はありますか??
独自のカスタムリダイレクト戦略も作成しました
httpclient.setRedirectStrategy(new DefaultRedirectStrategy() {
public boolean isRedirected(HttpRequest request, HttpResponse response, HttpContext context) {
boolean isRedirect = false;
try {
isRedirect = super.isRedirected(request, response, context);
LOG.info(response.getStatusLine().getStatusCode());
LOG.info(request.getRequestLine().getUri().replaceAll("%25", "%"));
} catch (ProtocolException e) {
e.printStackTrace();
}
if (!isRedirect) {
int responseCode = response.getStatusLine().getStatusCode();
if (responseCode == 301 || responseCode == 302) {
return true;
}
}
return isRedirect;
}
});
しかし、リダイレクトされた URL から %25C を %7C に置き換える方法がわかりません