2012-01-20 3 views
0

У меня есть цикл, который выглядит следующим образом:jsoup исключение

//Pseudo code 

subUrl = divs.get(n).select("a[href].eDL"); 

for(int o=0; o<subUrl.size(); o++) { 

    subUrlW = subUrl.get(o).select("a[href].eDL").attr("abs:href"); 

    httpget = new HttpGet(subUrlW); 
    HttpResponse httpRes2 = httpclient1.execute(httpget, httpContext); 
    html = EntityUtils.toString(httpRes2.getEntity()); 
    doc = Jsoup.parse(html, subUrlW); 
    divs = doc.select("div#pTU"); 

    for(int p=0; p<divs.size();p++) { 

     subUrl = divs.get(p).select("a[href].pd"); 
     for(int q=0; q<subUrl.size(); q++) { 

      subUrlW = subUrl.get(q).select("a[href].pd").attr("abs:href"); 

     } 
    }            
} 

Я вижу, что subUrlW является недействительным, однако, если я выполнить это отлаживать, subUrlW не является нулевым.

subUrl = divs.get(n).select("a[href].eDL"); 

for(int o=0; o<subUrl.size(); o++) { 

    subUrlW = subUrl.get(o).select("a[href].eDL").attr("abs:href"); 
    System.out.println("subUrlW"+subUrlW); 

} 

Когда этот цикл выполняется, я получаю следующее исключение,

java.lang.IllegalStateException: Target host must not be null, or set in parameters. 
    at org.apache.http.impl.client.DefaultRequestDirector.determineRoute(DefaultRequestDirector.java:717) 
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:358) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820) 
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754) 

Это, однако, указывает на его линии,

HttpResponse httpRes2 = httpclient1.execute(httpget, httpContext); 

любые входы оценены.

+4

Я бы сказал, что 'subUrlW' является' null'. Используйте отладчик, чтобы узнать. –

+0

Вы правы, я добавил еще один код выше, который показывает, что subUrlW не является нулевым, но когда я выполняю первый набор кода, он принимает значение null. – JNPW

ответ

0
subUrl = divs.get(n).select("a[href].eDL"); 

Document doc=null; 

for(int o=0; o< subUrl.size(); o++) 
{ 

    doc = JSoup.connect(subUrl[o].toString()); 
    subUrlW = doc.select("a[href].eDL").attr("abs:href"); 
    System.out.println("subUrlW"+subUrlW); 
    doc=null; 

}