Java で一連の HTTP リクエストを実装する必要があり、バージョン 4.3 (最新のもの) で Apaches HttpClient を使用することにしました。
問題は、これらすべてのリクエストがセッション管理に Cookie を使用することであり、その Cookie にアクセスしてリクエストからリクエストに渡す方法を見つけることができないようです。curl を使用する私のコマンドは次のようになります。
# Login
curl -c cookies -d "UserName=username&Password=password" "https://example.com/Login"
# Upload a file
curl -b cookies -F fileUpload=@IMG_0013.JPG "https://example.com/File"
# Get results of server processing file
curl -b cookies "https://example.com/File/1234/Content"
それらは完全に機能します。ただし、HttpClient では機能しないようです。私が試したのは:
URI serverAddress = new URI("https://example.com/");
URI loginUri = UriBuilder.fromUri(serverAddress).segment("Login").queryParam("UserName", "username")
.queryParam("Password", "password").build();
RequestConfig globalConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BEST_MATCH).build();
CookieStore cookieStore = new BasicCookieStore();
HttpClientContext context = HttpClientContext.create();
context.setCookieStore(cookieStore);
CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(globalConfig).setDefaultCookieStore(cookieStore).build();
HttpGet httpGet = new HttpGet(loginUri);
CloseableHttpResponse loginResponse = httpClient.execute(httpGet,context);
System.out.println(context.getCookieStore().getCookies());
最後の行の出力は常に空のリストです。Cookie を含める必要があると思いますが、そうですか?
Apache HttpClient 4.3 を使用して Cookie を処理する方法の小さな例を教えてもらえますか?
ありがとう