2017-02-13 21 views
1

Я создаю программу JAVA, которая использует JSOUP. Это то, что я имею в виду:JSOUP: данные формы набора

Я хочу использовать 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

не вы могли бы просто найти то, что вы хотите, манипулируя конечную точку 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 в качестве импорта для использования 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

+1

Спасибо так много !! Я не знал, что мог бы это сделать. – mikedaabeast

+0

Я обновил ответ о том, как разрешить ваш текущий случай, если вам было любопытно. –