java.io.IOException: неверный ответ Http

Теперь, прежде чем вы скажете, что есть такие вопросы, я хотел бы отметить, что я просмотрел большинство из них без везения. Кроме того, я здесь впервые, так что будьте нежны.

У меня есть это раздражение прямо сейчас в моей текущей программе:

По сути, эта часть моей программы использует поисковую систему для поиска торрент-файлов.

public static ArrayList<String> search(String args) throws IOException {        
    args = args.replace(":", "");

    ArrayList<String> list = new ArrayList<String>();
    URL url = new URL("http://pirateproxy.net/search/" + args + "/");
    URLConnection con = url.openConnection();
    BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); <---- THIS
}

public static void main(String[] args) {
    try {
        search("The Hobbit: The Desolation of Smaug");
    } catch (IOException e) {
        e.printStackTrace();
    }
}

ОШИБКА:

java.io.IOException: Invalid Http response
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at service.ServiceDownloader.search(ServiceDownloader.java:20)
at service.ServiceDownloader.main(ServiceDownloader.java:45)

Теперь самое интересное, что это ТОЛЬКО не так для этого фильма («Хоббит: Пустошь Смауга»), любой другой фильм работает идеально. Я этого не понимаю. Пожалуйста, помогите. (Также я удалил весь ненужный код из метода поиска)

Если я не поместил достаточно информации здесь, пожалуйста, спросите меня больше.


person AlexP    schedule 04.03.2014    source источник
comment
Какое значение args вы передаете во время выполнения? Проверяли ли вы вручную открытие того же URL-адреса, к которому вы пытаетесь получить доступ из своего кода?   -  person Stunner    schedule 04.03.2014
comment
pirateproxy.net/search/The Hobbit The Desolation of Smaug/ Что, если я скопирую вставить в адрес бар работает нормально.   -  person AlexP    schedule 04.03.2014


Ответы (3)


Вы должны URL-кодировать строку The Hobbit: The Desolation of Smaug, так как у вас есть специальный символ. Пример: космос.

person Abimaran Kugathasan    schedule 04.03.2014
comment
Это работает! Но я до сих пор не понимаю, почему. У меня было несколько других фильмов с пробелами, которые мне не нужно было менять, чтобы они работали. - person AlexP; 04.03.2014

Я подозреваю, что он споткнулся о двоеточие (:), а не о пробеле. Есть ли другие названия с двоеточием?

person John Stoner    schedule 16.05.2014

Вместо объединения строк и ненужного создания промежуточных строк и сбоя из-за того, что URL-адрес не закодирован, вы можете использовать встроенный UriBuilder для создания действительного URL-адреса.

URL path = UriBuilder.fromPath("http://pirateproxy.net")
            .path("search")
            .path("some movie ")
            .build()
            .toURL();

// http://pirateproxy.net/search/some%20movie%20
person svarog    schedule 29.12.2019