Задать вопрос
@ilavio

Почему обрезается String в Eclipse полученная по запросу через URL?

Здравствуйте!
Хотел обработать данные, содержащиеся при получении по запросу, через библиотеку URL. Но данные выводятся не полностью как в консоль, так и при сохранении в файл. Не могу понять почему? Работаю через Eclipse. Подобную задачу уже решал но только на Idea (закончилась триал лицензия) код работал. Кстати, когда запустил дебаг (Debug as) увидел что данные приходят полностью (5000 гео точек в виде json массива). Почему обрезается строка когда она присваивается переменной и выводится в консоль? Вот сам код: (ВНИМАНИЕ использую ломбок!)
package com.jsonEx.il;

import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class UrlConnection {
    private final String adress;
    private final String PATH;
    private URL url;

    /**
     * Метод получения соединения URL
     * 
     * @return URL
     */
    public URL getUrl() {
        try {
            url = new URL(adress);
            System.out.println(url.toString());
        } catch (MalformedURLException e) {
            System.out.println("Ошибка UrlConnection в getUrl(): " + e);
        }
        return url;
    }
    
    /**
     * Метод получения содержания запроса по url
     *
     * @return String
     */
    public String getJsonString() {
      StringBuffer strB1 = new StringBuffer();
      getUrl();
      try {
        //HttpURLConnection urlcon = (HttpURLConnection) url.openConnection();
        BufferedInputStream bufinstream = new BufferedInputStream(url.openConnection().getInputStream(), 64);
        byte[] bytemas = new byte[64];
        while (bufinstream.available() != 0) {
          bytemas = bufinstream.readAllBytes();
          strB1.append(new String(bytemas, StandardCharsets.UTF_8));
        }
        bufinstream.close();
      } catch (IOException e) {
        System.out.println("Ошибка UrlConnection в getJsonString(): ");
        e.printStackTrace();
      }
      return strB1.toString();
    }
    
    public String saveInFiles(String json) {
        Path path = Paths.get(PATH);
        if (!(Files.exists(path))) {
            try {
                Files.createFile(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        
        try(BufferedWriter buffer = Files.newBufferedWriter(path)){
            //для записи в файл
            buffer.write(json);
            
        }catch(IOException e) {
            System.out.println("Ошибка в записи 1");
            e.printStackTrace();
        }
        return json;
    }

}


package com.jsonEx.il;

public class ServiceJson {
    private final static String PATH = "src/main/java/save.txt";
    private static String json;

    public static void main(String[] args) {
        String urlAdress = "https://nominatim.openstreetmap.org/search?state=Samara&country=russia&format=json&polygon_geojson=1";
        String urlAdress2 = "https://shortiki.com/";
        System.out.println("Запуск, содержимоме:");
        UrlConnection url = new UrlConnection(urlAdress, PATH);
        //url.getUrl();
        json = url.getJsonString();
        url.saveInFiles(json);
        System.out.println(json);
    }
}


Кстати, если подставить переменную urlAdress2 то данные полностью отображаются! (html страница)
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Средний 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы