ਪੰਨਾ ਪ੍ਰੌਕਸੀ ਰਾਹੀਂ ਲੋਡ ਹੁੰਦਾ ਹੈ, ਪਰ ਲਹਿਜੇ ਵਾਲੇ ਅੱਖਰ ਵਿਗੜੇ ਹੋਏ ਵਾਪਸ ਆਉਂਦੇ ਹਨ। ਪ੍ਰੌਕਸੀ ਬਦਲਣ ਤੋਂ ਪਹਿਲਾਂ ਪਹਿਲੀ ਥਾਂ ਲੱਭੋ ਜਿੱਥੇ ਜਵਾਬ ਦੇ ਬਾਈਟ Java String ਬਣਦੇ ਹਨ। ਸਪਸ਼ਟ charset ਤੋਂ ਬਿਨਾਂ InputStreamReader ਉਹ ਫੈਸਲਾ jsoup ਵੱਲੋਂ ਦਸਤਾਵੇਜ਼ ਦੇਖਣ ਤੋਂ ਪਹਿਲਾਂ ਲੈ ਸਕਦਾ ਹੈ।

ਜਦੋਂ jsoup ਫੈਚ ਸੰਭਾਲਦਾ ਹੈ, ਪਾਰਸਿੰਗ ਤੱਕ ਜਵਾਬ ਨੂੰ ਇਕੱਠਾ ਰੱਖੋ:

Connection.Response response = Jsoup
    .connect("https://www.example.com/catalog")
    .proxy("proxy.example", 8080)
    .execute();
Document page = response.parse();

ਜਵਾਬ API Content-Type ਤੋਂ ਲਈ ਗਈ charset ਜਾਣਕਾਰੀ ਦਿਖਾਉਂਦੀ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਸਾਬਤ ਕਰ ਦਿਓ ਕਿ ਸਰਵਰ ਦਾ ਬਿਆਨ ਗਲਤ ਹੈ, ਤਾਂ ਇਹ ਸਪਸ਼ਟ charset ਓਵਰਰਾਈਡ ਵੀ ਸਵੀਕਾਰ ਕਰਦੀ ਹੈ। ਪ੍ਰੌਕਸੀ ਪਤਾ ਆਪਣੇ ਆਪ ਨਹੀਂ ਦੱਸਦਾ ਕਿ ਦਸਤਾਵੇਜ਼ ਕਿਹੜੀ ਅੱਖਰ ਐਨਕੋਡਿੰਗ ਵਰਤਦਾ ਹੈ। ਜੇ ਤੁਹਾਨੂੰ ਪ੍ਰੌਕਸੀ ਖਾਤੇ ਤੋਂ ਬਿਨਾਂ ਮਨਜ਼ੂਰਸ਼ੁਦਾ ਜਨਤਕ ਪੰਨੇ ਦੀ ਤੁਲਨਾ ਚਾਹੀਦੀ ਹੈ, ਤਾਂ ਉਦਾਹਰਨ ਦੇ HTTP ਹੋਸਟ ਅਤੇ ਪੋਰਟ ਨੂੰ HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਵਿੱਚੋਂ ਇੱਕ ਉਮੀਦਵਾਰ ਨਾਲ ਬਦਲੋ, ਉਹੀ ਐਨਕੋਡਿੰਗ ਜਾਂਚਾਂ ਰੱਖਦੇ ਹੋਏ।

ਜੇ ਕੋਈ ਹੋਰ HTTP ਕਲਾਇੰਟ InputStream ਦਿੰਦਾ ਹੈ, ਤਾਂ jsoup ਦਾ ਸਟ੍ਰੀਮ ਪਾਰਸ ਓਵਰਲੋਡ charset ਨਾਮ ਅਤੇ ਆਧਾਰ URI ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ। ਸ਼ੂਨਯ charset ਇਸ ਦੀ ਦਰਜ ਕੀਤੀ ਪਛਾਣ ਅਤੇ ਫਾਲਬੈਕ ਵਿਵਹਾਰ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ; ਜਾਣਿਆ ਅਤੇ ਸਹੀ HTTP charset ਜਾਣ-ਬੁੱਝ ਕੇ ਅੱਗੇ ਭੇਜਣਾ ਚਾਹੀਦਾ ਹੈ। ਆਧਾਰ URI ਸਾਪੇਖ ਲਿੰਕਾਂ ਲਈ ਸੰਦਰਭ ਦਿੰਦਾ ਹੈ।

ਇੱਕ ਵਾਰ ਬਾਈਟ ਗਲਤ ਢੰਗ ਨਾਲ ਡੀਕੋਡ ਹੋ ਜਾਣ ਪਿੱਛੋਂ, ਨਤੀਜੇ ਵਾਲੇ String ਨੂੰ ਕਿਸੇ ਹੋਰ charset ਨਾਲ ਪਾਰਸ ਕਰਨ ’ਤੇ ਮੂਲ ਪਾਠ ਵਾਪਸ ਨਹੀਂ ਆਉਂਦਾ। ਬਾਈਟਾਂ ਅਤੇ ਜਵਾਬ ਦੇ ਮੈਟਾਡੇਟਾ ਵੱਲ ਵਾਪਸ ਜਾਓ। ਜੋ ਪ੍ਰਾਪਤ ਹੋਇਆ ਉਸ ਦੀ ਵੀ ਤੁਲਨਾ ਕਰੋ: ਪ੍ਰੌਕਸੀ ਦਾ ਲੌਗਇਨ ਪੰਨਾ ਜਾਂ ਇਨਕਾਰ ਬੇਨਤੀ ਕੀਤੇ ਪੰਨੇ ਨਾਲੋਂ ਬਿਲਕੁਲ ਵੱਖਰਾ ਦਸਤਾਵੇਜ਼ ਹੋ ਸਕਦਾ ਹੈ, ਨਾ ਕਿ ਇਸ ਵਿੱਚ ਡੀਕੋਡਿੰਗ ਅਸਫਲਤਾ।

ਸੰਬੰਧਿਤ ਲੇਖ