JSOUP:设置表单数据

时间:2017-02-13 07:22:43

标签: java forms jsoup wordnet

我正在创建一个使用JSOUP的JAVA程序。这就是我的想法:

我想使用WordNet(http://wordnetweb.princeton.edu/perl/webwn)。 我有一个基本形式,用户可以在其中输入字符串。它检查字符串是否是英语词典中的单词。 当您提交表单时,URL会更改。我使用这个URL。然后我检查某个h3标签,只有当它不是单词时才会出现。

我的问题是能够填写表格并使用JSOUP提交,并获取提交所需的URL。

这是表格

<form method="get" action="webwn" enctype="multipart/form-data" name="f">
Word to search for: 
<input type="text" name="s" maxlength="500">
<input type="submit" name="sub" value="Search WordNet">
<input type="hidden" name="o2" value="">
<input type="hidden" name="o0" value="1">
<input type="hidden" name="o8" value="1">
<input type="hidden" name="o1" value="1">
<input type="hidden" name="o7" value="">
<input type="hidden" name="o5" value="">
<input type="hidden" name="o9" value="">
<input type="hidden" name="o6" value="">
<input type="hidden" name="o3" value="">    
<input type="hidden" name="o4" value="">
<input type="hidden" name="h" value="">
</form>

我不知道该怎么做。这是我坚持的唯一部分。 到目前为止我试过这个但是它没有做任何事情

public static String getUrl(String search) throws IOException{
        String url = "http://wordnetweb.princeton.edu/perl/webwn";
        Document doc = Jsoup.connect(url)
                .data("S", search)
                .data("o2", "")
                .data("o0", "1")
                .data("o8", "1")
                .data("o1", "1")
                .data("o7", "")
                .data("o5", "")
                .data("o9", "")
                .data("o6", "")
                .data("o3", "")
                .data("o4", "")
                .data("h", "")
                .post();
        String newURL = doc.location().toString();
        System.out.println(newURL);
        return (newURL);
}

1 个答案:

答案 0 :(得分:1)

你可以通过操纵url的端点来搜索你想要的东西:

http://wordnetweb.princeton.edu/perl/webwn?s=并连接您要搜索的内容。

如果您要搜索的字词是"bill",那么

/*
 * returns url of search term using jsoup
 */
public static String getUrl(String search) throws IOException{
    String url = "http://wordnetweb.princeton.edu/perl/webwn?s=";
    Document doc = Jsoup.connect(url + search).get();
    String newURL = doc.location().toString();
    System.out.println(newURL);
    return (newURL);
}

然后,如果你只是想测试一个单词是否是一个单词,你可以这样做

/*
 * returns true if is a word
 */
public static boolean isWord(String search) throws IOException{

    String url = "http://wordnetweb.princeton.edu/perl/webwn?s=";
    String notAWord = "Your search did not return any results.";

    Document doc = Jsoup.connect(url + search).get();
    String searchH3 = doc.select("h3").text();

    return searchH3.contains(notAWord) ? false : true;

}

如果您要发布帖子请求,则可以使用Connection.Response来获取post的回复。您只需要import org.jsoup.Connection作为导入即可使用Connection API。

public static String getUrl(String search) throws IOException{

    Connection.Response wordForm = Jsoup.connect("http://wordnetweb.princeton.edu/perl/webwn")
            .method(Connection.Method.GET)
            .execute();

    String url = "http://wordnetweb.princeton.edu/perl/webwn";
    Document doc = Jsoup.connect(url)
            .data("s", search)
            .data("o2", "")
            .data("o0", "1")
            .data("o8", "1")
            .data("o1", "1")
            .data("o7", "")
            .data("o5", "")
            .data("o9", "")
            .data("o6", "")
            .data("o3", "")
            .data("o4", "")
            .data("h", "")
            .cookies(wordForm.cookies())
            .post();

    System.out.println(doc);

    String newURL = doc.location().toString();
    return (newURL);
}

可以找到类似的示例here

相关问题