System.out.println всегда выводит ХЭШ (0x ……..)

#java #android #string #hash

#java #Android #строка #хэш

Вопрос:

Инструкция System.out.println, приведенная ниже, всегда выводит в logcat ссылку на хэш, например «HASH (0x ….)», независимо от того, указываю ли я переменную для печати как «line» или «line».toString()». Как мне заставить его печатать фактическое строковое значение?

 URL object=new URL(url);
HttpURLConnection con = (HttpURLConnection) object.openConnection();
con.setDoOutput(true);
con.setDoInput(true);
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Accept", "application/json");

try {
    con.setRequestMethod("POST");
} catch (ProtocolException e) {
    e.printStackTrace();
}

OutputStreamWriter wr;
try {
    wr = new OutputStreamWriter(con.getOutputStream());
    wr.write(json.toString());  
    wr.flush();
} catch (IOException e) {
    e.printStackTrace();
}                       

int HttpResult = con.getResponseCode(); 
if (HttpResult == HttpURLConnection.HTTP_OK) {
    BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(),"utf-8")); 
    String line;  
    while ((line = br.readLine()) != null) {  
        System.out.println("Line: "   line.toString());
    }  
    br.close();  
}
 

Комментарии:

1. Да, функция json.toString() работает нормально.

2. Не имеет значения, печатаете ли вы line или line.toString() , println() метод будет использовать toString() метод в обоих случаях. Проблема, должно быть, на другом конце, поскольку ваш код для чтения и печати выглядит просто отлично.

3. Покажите свой вывод logcat. Что вы пытаетесь сделать с кодом? Вы читаете ответ в формате json?

4. 06-27 00:22:09.788: I/System.out(1753): ХЭШ (0x29ddfcf8). Я пытаюсь отладить ответ «да».

Ответ №1:

В вашем коде нет ничего плохого. Вы могли бы заменить весь код над циклом чем-то более простым, например:

         FileInputStream fstream = new FileInputStream("somefile");
        BufferedReader br = new BufferedReader(new InputStreamReader(fstream,"utf-8")); 
        String line; 
        while ((line = br.readLine()) != null) {  
            System.out.println("Line: "   line);
        }  
        br.close();  
 

И вы увидите содержимое файла.

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

Я подозреваю, что сервер отправляет вам сжатое тело и каждую строку в виде хэша, потому что это определение сжатия, которое все в шестнадцатеричном формате.

Содержимое в формате json, но оно было сжато для увеличения размера и скорости.