#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, но оно было сжато для увеличения размера и скорости.