ਬੇਨਤੀ ਹੈਂਡਲ 'ਤੇ WinHTTP ਪ੍ਰੌਕਸੀ ਚੁਣੌਤੀ ਦਾ ਜਵਾਬ ਦੇਣਾ
ਪ੍ਰੌਕਸੀ ਪ੍ਰਮਾਣਿਕਤਾ ਟਾਰਗੇਟ ਅਤੇ ਸਮਰਥਿਤ ਪੇਸ਼ ਕੀਤੀ ਸਕੀਮ ਨਾਲ WinHttpSetCredentials ਵਰਤੋ, ਫਿਰ ਬੇਨਤੀ ਨੂੰ ਜਾਣ-ਬੁੱਝ ਕੇ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।
WinHTTP ਬੇਨਤੀ ਨੂੰ 407 ਮਿਲਣ ਤੋਂ ਬਾਅਦ, ਪੇਸ਼ ਕੀਤੀਆਂ ਵਿਧੀਆਂ ਦੀ ਜਾਂਚ ਲਈ WinHttpQueryAuthSchemes ਵਰਤੋ ਅਤੇ ਉਹ ਚੁਣੋ ਜਿਸ ਨੂੰ ਕਲਾਇੰਟ ਅਤੇ ਖਾਤਾ ਦੋਵੇਂ ਸਮਰਥਨ ਕਰਦੇ ਹਨ। ਉਸੇ ਬੇਨਤੀ 'ਤੇ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਸੈੱਟ ਕਰੋ:
WinHttpSetCredentials(
requestHandle,
WINHTTP_AUTH_TARGET_PROXY,
selectedScheme,
proxyUser,
proxyPassword,
nullptr);
ਆਖਰੀ ਰਾਖਵਾਂ ਆਰਗਿਊਮੈਂਟ null ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਬੂਲੀਅਨ ਨਤੀਜਾ ਅਤੇ ਅਸਫਲਤਾ ਵੇਲੇ GetLastError ਜਾਂਚੋ। ਸਫਲਤਾ ਦਾ ਮਤਲਬ ਹੈ ਕਿ API ਨੇ ਸੈਟਿੰਗ ਸਵੀਕਾਰ ਕੀਤੀ, ਇਹ ਨਹੀਂ ਕਿ ਪ੍ਰੌਕਸੀ ਨੇ ਲੌਗਇਨ ਸਵੀਕਾਰ ਕੀਤਾ।
ਨਿਯੰਤਰਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਪ੍ਰਵਾਹ ਰਾਹੀਂ ਦੁਬਾਰਾ ਭੇਜੋ ਅਤੇ ਜਵਾਬ ਦੀ ਜਾਂਚ ਕਰੋ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ਾਂ ਸੀਮਿਤ ਰੱਖੋ; ਜੇ ਕਾਰਵਾਈ ਦੁਹਰਾਈ ਜਾਵੇ ਤਾਂ ਪਹਿਲਾਂ ਵਰਤੀ ਗਈ ਬੇਨਤੀ-ਬਾਡੀ ਸਟ੍ਰੀਮ ਦੁਬਾਰਾ ਚਲਾਉਣ ਯੋਗ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ। ਮੰਜ਼ਿਲ ਦਾ 401 WINHTTP_AUTH_TARGET_SERVER ਵਰਤਦਾ ਹੈ, ਜੋ ਇਸ ਪ੍ਰੌਕਸੀ ਟਾਰਗੇਟ ਤੋਂ ਵੱਖਰਾ ਹੈ।
ਇਹ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਸਿਰਫ਼ ਇੱਕ ਬੇਨਤੀ ਲਈ ਲਾਗੂ ਹੁੰਦੇ ਹਨ। WinHTTP ਇਹਨਾਂ ਨੂੰ ਬਾਅਦ ਦੀਆਂ ਬੇਨਤੀਆਂ ਲਈ ਆਮ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਭੰਡਾਰ ਨਹੀਂ ਬਣਾਉਂਦਾ। ਦੁਬਾਰਾ ਵਰਤੇ ਗਏ ਪ੍ਰਮਾਣਿਤ ਕਨੈਕਸ਼ਨ ਕਿਸੇ ਹੋਰ ਚੁਣੌਤੀ ਨੂੰ ਕੁਝ ਸਮੇਂ ਲਈ ਲੁਕਾ ਸਕਦੇ ਹਨ, ਇਸ ਲਈ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਭਵਿੱਖ ਦੀਆਂ ਚੁਣੌਤੀਆਂ ਵੀ ਸੰਭਾਲਣੀਆਂ ਪੈਣਗੀਆਂ।
ਪ੍ਰੌਕਸੀ ਚੋਣ ਨੂੰ ਵੱਖਰਾ ਰੱਖੋ। ਪ੍ਰਮਾਣ-ਪੱਤਰਾਂ ਵਾਲੀ ਪਤਾ-ਸਤਰ ਇਸ ਬੇਨਤੀ-ਹੈਂਡਲ API ਦੀ ਥਾਂ ਨਹੀਂ ਲੈਂਦੀ, ਜਿਵੇਂ ਐਂਡਪੌਇੰਟ ਤੱਕ ਸਫਲਤਾਪੂਰਵਕ ਪਹੁੰਚਣਾ ਪ੍ਰਮਾਣਿਕਤਾ ਪੂਰੀ ਨਹੀਂ ਕਰਦਾ।