Apache HttpClient 4.2: ਬੇਨਤੀ ਸੰਦਰਭ 'ਤੇ ਪ੍ਰੌਕਸੀ AuthCache ਰੱਖੋ
HttpClient 4.2 ਪ੍ਰੌਕਸੀ ਦੀ Basic-auth ਕੈਸ਼ ਨੂੰ ਉਸੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਸੰਦਰਭ 'ਤੇ ਰੱਖੋ ਜੋ ਅਗਲੀਆਂ ਬੇਨਤੀਆਂ ਵਰਤਦੀਆਂ ਹਨ।
ਪੁਰਾਣੀ HttpClient 4.2.2 ਐਪਲੀਕੇਸ਼ਨ ਵਿੱਚ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਪ੍ਰੋਵਾਈਡਰ ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ ਕੈਸ਼ ਵੱਖਰੇ ਕੰਮ ਕਰਦੇ ਹਨ। ਪ੍ਰੋਵਾਈਡਰ ਖਾਤਾ ਦਿੰਦਾ ਹੈ; ਕੈਸ਼ ਜਾਣ-ਬੁੱਝ ਕੇ ਪਹਿਲਾਂ ਤੋਂ ਸੰਰਚਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਸਕੀਮ ਨੂੰ ਅਗਲੀ ਚੁਣੌਤੀ ਆਉਣ ਤੋਂ ਪਹਿਲਾਂ ਹਿੱਸਾ ਲੈਣ ਦਿੰਦਾ ਹੈ।
ਪੁਰਾਣੇ ਪ੍ਰੌਕਸੀ-ਵਿਸ਼ੇਸ਼ BasicScheme ਕੰਸਟ੍ਰਕਟਰ ਲਈ, ਹਸਤਾਂਤਰਨ ਇਸ ਤਰ੍ਹਾਂ ਦਿਸਦਾ ਹੈ:
AuthCache cache = new BasicAuthCache();
cache.put(proxy, new BasicScheme(ChallengeState.PROXY));
HttpContext context = new BasicHttpContext();
context.setAttribute(ClientContext.AUTH_CACHE, cache);
HttpResponse response = client.execute(request, context);ਇਹ ਟੁਕੜਾ ਮੰਨਦਾ ਹੈ ਕਿ client ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਮੇਲ ਖਾਂਦਾ ਪ੍ਰੌਕਸੀ ਰੂਟ ਅਤੇ ਕ੍ਰੈਡੈਂਸ਼ੀਅਲ ਪ੍ਰੋਵਾਈਡਰ ਹੈ। proxy ਇਸਦਾ HttpHost ਹੈ, ਅਤੇ request ਅਸਲ ਕਾਰਵਾਈ ਹੈ। ਕੈਸ਼ ਕੁੰਜੀ ਨੂੰ ਉਸ ਵਿਚੋਲੇ ਦਾ ਵਰਣਨ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਮੰਜ਼ਿਲ ਵੈੱਬਸਾਈਟ ਦਾ ਨਹੀਂ।
ਭਰਿਆ ਹੋਇਆ ਸੰਦਰਭ execute ਨੂੰ ਦਿਓ। ਇਸਨੂੰ ਬਣਾ ਕੇ ਫਿਰ ਦੂਜਾ ਸੰਦਰਭ ਬਣਾਉਣ ਵਾਲਾ ਓਵਰਲੋਡ ਵਰਤਣ ਨਾਲ ਕੈਸ਼ ਅਦਲ-ਬਦਲ ਤੋਂ ਬਾਹਰ ਰਹਿ ਜਾਂਦਾ ਹੈ। ਉਸ ਪ੍ਰਮਾਣਿਕਤਾ ਸਥਿਤੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਵਾਲੀਆਂ ਅਗਲੀਆਂ ਕਾਰਵਾਈਆਂ ਲਈ, ਹਰ ਵਾਰ ਖਾਲੀ ਸੰਦਰਭ ਮੁੜ ਬਣਾਉਣ ਦੀ ਬਜਾਏ ਢੁਕਵਾਂ ਸੰਦਰਭ ਰੱਖੋ।
ਸਪੱਸ਼ਟ PROXY ਸਥਿਤੀ ਇਸ ਪੁਰਾਣੀ API ਦੀ ਹੈ। TARGET ਮੰਜ਼ਿਲ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ। ਨਵੀਆਂ HttpClient ਪੀੜ੍ਹੀਆਂ ਨੇ ਪੈਕੇਜ ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ API ਬਦਲ ਦਿੱਤੇ ਹਨ, ਇਸ ਲਈ ਇਸਨੂੰ ਮੌਜੂਦਾ 4.2 ਕੋਡ ਲਈ ਰੱਖ-ਰਖਾਅ ਮਾਰਗਦਰਸ਼ਨ ਸਮਝੋ, ਨਵੇਂ client ਲਈ ਵਿਧੀ ਨਹੀਂ।
ਆਮ ਚੁਣੌਤੀ-ਚਾਲਿਤ ਅਦਲ-ਬਦਲ ਅਜੇ ਵੀ ਸਹੀ ਹੋ ਸਕਦਾ ਹੈ। Basic ਪ੍ਰਮਾਣਿਕਤਾ ਸਿਰਫ਼ ਕਿਸੇ ਜਾਣੇ-ਪਛਾਣੇ ਅਤੇ ਇਰਾਦੇ ਵਾਲੇ ਪ੍ਰੌਕਸੀ ਲਈ ਹੀ ਬੀਜੋ, ਅਤੇ ਹਰ ਜਵਾਬ ਨੂੰ ਅਗਲੀ ਕਾਰਵਾਈ ਨੂੰ ਇਸਦੇ ਕਨੈਕਸ਼ਨ ਦੀ ਲੋੜ ਪੈਣ ਤੋਂ ਪਹਿਲਾਂ ਵਰਤੋ ਜਾਂ ਛੱਡ ਦਿਓ। ਲਾਭਦਾਇਕ ਨਤੀਜਾ ਉਹ ਖਾਤਾ ਅਤੇ ਕੈਸ਼ ਕੀਤੀ ਸਕੀਮ ਹੈ ਜੋ ਅਸਲ ਵਿੱਚ ਬੇਨਤੀ ਭੇਜਣ ਵਾਲੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਨਾਲ ਜੁੜੀ ਹੁੰਦੀ ਹੈ।