Прокси в Java: нераспознанная кодировка в Firefox - PullRequest
1 голос
/ 08 января 2012

)

Это снова я.Поэтому сегодня я пишу прокси-сервер на Java.У меня есть обработка соединений и сокетов, даже загрузка.

Теперь я сталкиваюсь с такой проблемой, что Firefox, подключенный к прокси-серверу и попросивший показать сайт Google, возвращает мне:

Error in content encoding.

Мне бы хотелось, чтобы страница отображалась правильно.

Вот как я читаю веб-содержимое:

BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            String line;

            System.out.println("            READING RESPONSE!");
            int contentLength = 0;
            while ((line = rd.readLine()) != null) {
                ret+=line+"\r\n";
                System.out.println("                "+line);
                if(line.startsWith("Content-Length:"))
                {
                    String[] tmpCL = line.split(" ");
                    contentLength = Integer.parseInt(tmpCL[1]);
                }
                if(line.length() == 0)
                {
                    body = new char[contentLength];
                    for(int r= 0; r < contentLength; r++)
                    {
                        body[r] = (char) rd.read();

                    }
                }
            }
            System.out.println("            GOT RESPONSE!");

А вот как я отправляю его обратно клиенту:

  System.out.println("      SENDING PAGE TO CLIENT");   
                //System.out.println(page);
                OutputStream Cout = clientSocket.getOutputStream();

                Cout.write(page.getBytes(Charset.forName("UTF-8")));
                System.out.println("        Page Sent..."); 

Это пример моего прокси-отладочного вывода: (Все вроде нормально)

    REQUEST: GET http://www.rfc-editor.org/rfc/rfc4501.txt HTTP/1.1
        getPage!
                GET http://www.rfc-editor.org/rfc/rfc4501.txt HTTP/1.1
                Host: www.rfc-editor.org
                User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
                Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
                Accept-Language: pl,en-us;q=0.7,en;q=0.3
                Accept-Encoding: gzip, deflate
                Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7
                Proxy-Connection: keep-alive
                Cache-Control: max-age=0
            REQUEST SENT!
            READING RESPONSE!
                HTTP/1.1 200 OK
                Date: Sun, 08 Jan 2012 16:32:09 GMT
                Server: Apache/2.2.10 (Linux/SUSE) mod_ssl/2.2.10 OpenSSL/0.9.8h PHP/5.2.13 with Suhosin-Patch mod_python/3.3.1 Python/2.6 mod_perl/2.0.4 Perl/v5.10.0
                Last-Modified: Wed, 03 May 2006 21:42:10 GMT
                ETag: "376faa-51fe-412e928ead080"-gzip
                Accept-Ranges: bytes
                Vary: Accept-Encoding
                Content-Encoding: gzip
                Content-Length: 7481
                Content-Type: text/plain

            GOT RESPONSE!
HTTP/1.1 200 OK
Date: Sun, 08 Jan 2012 16:32:09 GMT
Server: Apache/2.2.10 (Linux/SUSE) mod_ssl/2.2.10 OpenSSL/0.9.8h PHP/5.2.13 with Suhosin-Patch mod_python/3.3.1 Python/2.6 mod_perl/2.0.4 Perl/v5.10.0
Last-Modified: Wed, 03 May 2006 21:42:10 GMT
ETag: "376faa-51fe-412e928ead080"-gzip
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 7481
Content-Type: text/plain

Не могли бы вы указать мне мои ошибки?Я считаю, что что-то не так, что я использую это как строки, но ... HTML основан только на строках.

...