簡體   English   中英

如何在路由器地址上使用jsoup?

[英]how to use jsoup on router address?

我對Jsoup庫有疑問...

我有這個小程序,可以下載,解析並獲取google.com的HTML頁面的標題。

import java.io.File;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class HTMLParser{

   public static void main(String args[]) {


    // JSoup Example - Reading HTML page from URL

    Document doc;
    try {
        doc = Jsoup.connect("http://google.com/").get();
        title = doc.title();
    } catch (IOException e) {
        e.printStackTrace();
    }
    System.out.println("Jsoup Can read HTML page from URL, title : "+title);
  }
}

程序運行良好,但問題是:

當我嘗試從ip地址192.168.1.1解析文件時(我將google.com更改為192.168.1.1 ,這是路由器的地址):

        doc = Jsoup.connect("http://192.168.1.1/").get();

它不起作用,並向我顯示以下錯誤:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=401, URL=http://192.168.1.1/
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:537)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:493)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:205)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:194)
at HTMLParser.main(HTMLParser.java:43)

首先,我認為問題與“用戶名和密碼”有關,因此我將地址192.168.1.1更改為Username:Password@192.168.1.1

        doc = Jsoup.connect("http://username:password@192.168.1.1/").get();

但它不起作用,程序將整個行作為地址讀取。

如果有人有任何想法請幫助我! 謝謝大家

與saka1029一樣,您可以通過身份驗證請求URL。 然后,使用Jsoup.parse(String)獲取Document對象。

或者,您只是使用Jsoup方法發送請求並獲取響應:

使用受密碼保護的網站的Jsoup獲取HTML Source

具有基本訪問身份驗證的Jsoup連接

(我通常將javax.xml.bind.DatatypeConverter.printBase64Binary用於Base64轉換。)

非常感謝saka1029; Griddoor。 我讀了您的建議,這對您很有幫助,

對我來說,我使用此解決方案:

URL url = new URL("http://user:pass@domain.com/url");
URLConnection urlConnection = url.openConnection();

if (url.getUserInfo() != null) {
    String basicAuth = "Basic " + new String(new Base64().encode   (url.getUserInfo().getBytes()));
    urlConnection.setRequestProperty("Authorization", basicAuth);
}

InputStream inputStream = urlConnection.getInputStream();

來自: 連接到需要使用Java進行身份驗證的遠程URL

並使用此方法讀取inputstream

StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer);
String theString = writer.toString();

from: 讀取/轉換InputStream為字符串

然后我用Jsoup解析theString

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM