В каком формате передаются данные, getInputStream для объекта URLconnection? - PullRequest
1 голос
/ 03 июня 2019

Я пытаюсь подключиться к сценарию php на сервере и получить текст, который повторяет сценарий. Выполните, я использовал следующий код.

CODE: =

import java.net.*;
import java.io.*;
class con{
public static void main(String[] args){
    try{
        int c;
        URL tj = new URL("http://www.thejoint.cf/test.php");
        URLConnection tjcon = tj.openConnection();
        InputStream input = tjcon.getInputStream();
        while(((c = input.read()) != -1)){
            System.out.print((char) c);
        }
        input.close();
    }catch(Exception e){
        System.out.println("Caught this Exception:"+e);
    }
    }
}

Я получаю желаемый вывод, который является текстом «Вы будете очень успешны». Но когда я удаляю приведение типа (char), получается 76-значный длиной.8911111732119105108108329810132118101114121321151179999101115115102117108108 число, которое я не могу понять. Я читал, что getInputStream - это byte stream, тогда должно ли быть число цифр, умноженное на 8 чисел?Любое понимание было бы очень полезно, спасибо

1 Ответ

3 голосов
/ 03 июня 2019

Не печатается одно число длиной 76 цифр.Там у вас есть цикл, он печатает много цифр, каждая длиной до трех цифр (один байт).

В ASCII, 89 = "Y", 111 = "o" ....

То, что вы удалили для char, было то, что оно интерпретировало это число как Unicodeвместо этого укажите код и напечатайте соответствующие символы (также по одному за раз).

Этот способ чтения байта текста очень хрупок.В основном это работает только с ASCII.Вы должны использовать Reader, чтобы обернуть InputStream.Затем вы можете читать char и String напрямую (и он позаботится о наборах символов, таких как Unicode).

О, я думал, что это выдаст байтовое представление отдельной буквы.

Но это именно то, что он делает.Вы можете увидеть это более четко, если вы используете println вместо print (тогда он будет печатать каждое число в отдельной строке).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...