HTTP ਬੇਨਤੀ ਚੱਲਦੀ ਰਹਿੰਦਿਆਂ ਸਟੌਪਵਾਚ ਉਡੀਕ ਰੋਕ ਸਕਦੀ ਹੈ। ਜਦੋਂ ਪ੍ਰੌਕਸੀ ਕੋਸ਼ਿਸ਼ ਲਈ ਸਮਾਂ-ਬਜਟ ਤੈਅ ਹੋਵੇ ਤਾਂ ਰੱਦ ਕਰਨ ਦੀ ਸਹੂਲਤ ਕਾਰਵਾਈ ਨੂੰ ਹੀ ਦਿਓ।

ਪਹਿਲਾਂ ਹੀ ਪ੍ਰੌਕਸੀ ਨਾਲ ਸੰਰਚਿਤ HttpClient ਵਾਲੀ ਆਧੁਨਿਕ .NET ਐਪਲੀਕੇਸ਼ਨ ਲਈ:

using var budget = new CancellationTokenSource(TimeSpan.FromSeconds(5));
using var response = await client.GetAsync(
    targetUrl,
    HttpCompletionOption.ResponseHeadersRead,
    budget.Token);
response.EnsureSuccessStatusCode();
string body = await response.Content.ReadAsStringAsync(budget.Token);

ਉਹੀ ਬਜਟ ਤਿਆਰੀ ਤੋਂ ਪਹਿਲਾਂ ਸ਼ੁਰੂ ਹੁੰਦਾ ਹੈ ਅਤੇ ਬਾਡੀ ਪੜ੍ਹਨ ਵੇਲੇ ਵੀ ਸਰਗਰਮ ਰਹਿੰਦਾ ਹੈ। ResponseHeadersRead ਹੈਡਰਾਂ ਤੋਂ ਬਾਅਦ ਕੰਟਰੋਲ ਵਾਪਸ ਦਿੰਦਾ ਹੈ, ਇਸ ਲਈ HttpClient ਦਾ ਆਪਣਾ ਸਮਾਂ-ਅੰਤ ਬਾਅਦ ਵਾਲੀ ਬਾਡੀ ਪੜ੍ਹਨ ਦੀ ਮਿਆਦ ਆਪਣੇ ਆਪ ਤੈਅ ਨਹੀਂ ਕਰਦਾ।

ਰੱਦ ਕਰਨ ਨੂੰ HTTP ਸਥਿਤੀ ਅਤੇ ਟਰਾਂਸਪੋਰਟ ਗਲਤੀਆਂ ਤੋਂ ਵੱਖ ਰੱਖੋ। OperationCanceledException ਦਿੱਤੇ ਟੋਕਨ ਜਾਂ ਕਿਸੇ ਹੋਰ ਸੰਰਚਿਤ ਸਮੇਂ ਤੋਂ ਆ ਸਕਦਾ ਹੈ; ਹਰ ਅਸਫਲਤਾ ਨੂੰ ਮਰੀ ਹੋਈ ਪ੍ਰੌਕਸੀ ਕਹਿਣ ਦੀ ਥਾਂ ਸੰਬੰਧਿਤ ਰੱਦ ਕਰਨ ਵਾਲੇ ਸਰੋਤ ਦੀ ਜਾਂਚ ਕਰੋ।

ਇਸ ਪ੍ਰੌਕਸੀ ਰਸਤੇ ਦਾ ਮਾਲਕ ਕਲਾਇੰਟ ਹੀ ਦੁਬਾਰਾ ਵਰਤੋ। ਇੱਕ ਕੋਸ਼ਿਸ਼ ਰੱਦ ਕਰਨ ਦਾ ਮਤਲਬ ਇਹ ਨਹੀਂ ਕਿ ਹਰ ਅਗਲੀ ਬੇਨਤੀ ਲਈ ਪੂਰਾ ਕੁਨੈਕਸ਼ਨ ਪੂਲ ਮੁੜ ਬਣਾਉਣਾ ਪਵੇ।

ਉਦਾਹਰਨ ਸੀਮਿਤ ਆਕਾਰ ਦੀ ਜਵਾਬ ਬਾਡੀ ਬਫਰ ਕਰਦੀ ਹੈ। ਸਟ੍ਰੀਮਿੰਗ ਡਾਊਨਲੋਡ ਵਿੱਚ ਟੋਕਨ ਨੂੰ ਸਟ੍ਰੀਮ-ਕਾਪੀ ਲੂਪ ਰਾਹੀਂ ਭੇਜੋ ਅਤੇ ਹਰ ਬਾਹਰ ਨਿਕਲਣ ਵਾਲੇ ਰਸਤੇ ’ਤੇ ਜਵਾਬ ਛੱਡੋ।

ਰੱਦ ਕਰਨਾ ਕਾਰਵਾਈ ਦੀ ਨੀਤੀ ਦਰਸਾਉਂਦਾ ਹੈ, ਹਰ ਪਲੇਟਫਾਰਮ ਕਾਰਵਾਈ ਲਈ ਸਹੀ ਘੜੀ ਦਾ ਵਾਅਦਾ ਨਹੀਂ। Task.IsCompleted ’ਤੇ ਬੇਅੰਤ ਪੋਲਿੰਗ ਲੂਪ ਨਾਲ ਇਸ ਦੀ ਥਾਂ ਨਾ ਲਵੋ।

ਸੰਬੰਧਿਤ ਲੇਖ