URLConnection застревает и не выбрасывает ошибки - PullRequest
0 голосов
/ 03 июля 2011

Ниже мой код.Когда я запускаю этот код, он всегда застревает.Иногда он запускает цикл 100 раз, иногда 3000. Странно то, что он не выдает ошибку, а просто застревает.У кого-нибудь есть идеи?

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import us.monoid.web.Resty;


public class Example1 {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    // Allow certificates - See http://en.wikibooks.org/wiki/Programming:WebObjects/Web_Services/How_to_Trust_Any_SSL_Certificate
    SSLUtilities.trustAllHostnames( );
    SSLUtilities.trustAllHttpsCertificates() ;

    // Variables
    int i = 0;
    String  askBidURL = "https://www.exchangebitcoins.com/data/depth";

     while(true){ 

       System.out.println("Example 1 - Run #" + i);
       Resty r = new Resty();

       try {String jsonw = r.text(askBidURL).toString();} 
       catch (IOException ex){Logger.getLogger(Example1.class.getName()).log(Level.SEVERE, null, ex); }
       i++;

   }
}
}

1 Ответ

0 голосов
/ 05 февраля 2012

Resty.text () или вызов в нем, возможно, не принимают данные достаточно быстро.

У меня было что-то подобное при выполнении операции read () из InputStream HTTPURLConnection (даже с BufferedInputStream в середине) и постепенном добавлении байтов в строку. По-видимому, это было вызвано тем, что строка строилась слишком медленно и не успевала за поступающими данными. Оптимизировав этот цикл, проблема ушла.

Это будет происходить случайно, примерно один раз в 100-1000 GET; но когда это произошло, это каким-то образом саботирует последующие соединения, даже если внешний поток таймера закроет () d застрявшие потоки read () и соединение.

По-видимому, иногда кажется, что передача вроде бы сдается, если цикл недостаточно быстро получает данные из InputStream, поэтому readSt) InputStream никогда не видит блок нулевого размера и никогда не завершается.

Не уверен, какое у тебя настроение, чтобы модифицировать свою библиотеку ...

...