how to post data to an ajax function with Jsoup

假装没事ソ 提交于 2020-01-05 10:28:24

问题


i want to post a string to

<li id="coz"><a
        onclick="doRequest('zemberek.jsp','YAZI_COZUMLE');">Cozumle</a></li>

by Jsoup?.How can I do? here is original site : http://zemberek-web.appspot.com/

<html>
<head>
    <script>
        function doRequest(url, islem) {
            var ajaxRequest = new AjaxRequest(url);
            var hiddenField = document.getElementById("islem");
            hiddenField.value = islem;
            ajaxRequest.addNamedFormElements("giris", "islem");
            ajaxRequest.sendRequest();
        }
    </script>
</head>

<body>
<big>Zemberek Demo</big>
<small>(<a href="http://code.google.com/p/zemberek">Zemberek
Proje Sitesi</a>)</small>
<div id="menu">
<ul id="nav">
    <li id="denetle"><a
        onclick="doRequest('zemberek.jsp', 'YAZI_DENETLE');">Denetle</a></li>
    <li id="coz"><a
        onclick="doRequest('zemberek.jsp','YAZI_COZUMLE');">Cozumle</a></li>
    <li id="oner"><a onclick="doRequest('zemberek.jsp','ONER');">Oner</a></li>
    <li id="ascii2tr"><a
        onclick="doRequest('zemberek.jsp','ASCII_TURKCE');">Ascii->Tr</a></li>
    <li id="tr2ascii"><a
        onclick="doRequest('zemberek.jsp','TURKCE_ASCII');">Tr->ascii</a></li>
    <li id="hecele"><a onclick="doRequest('zemberek.jsp','HECELE');">Hecele</a></li>
    <li id="ayristir"><a
        onclick="doRequest('zemberek.jsp','SACMALA');">Sacmala</a></li>
</ul>
</div>


<br>
<br>
<br>
<br>
<br>

<form id="form" action="#">
<P align=center><b>Islem yapilacak yaziyi asagidaki alana
giriniz.</b><br>
<textarea name="giris" rows="10" cols="60"></textarea> <input
    type="hidden" name="islem" id="islem" /></P>
</form>

<br>

<div id="div"></div>

</body>
</html>

回答1:


Simple and working solution with Jsoup:

Code

String url = "http://zemberek-web.appspot.com/zemberek.jsp?ts=1367326940830&giris=%s&islem=YAZI_COZUMLE";

String query = "MyParamĄĘÓŚŁ";

String formattedUrl = String.format(url, URLEncoder.encode(query, "UTF-8"));

Document document = Jsoup.connect(formattedUrl).get();

String result = document.select("taconite-root > taconite-replace-children > div").text();

System.out.println(result);

Result

MyParam :cozulemedi



回答2:


I think the anserw is the following if you look the request in Google Chrome developper tools you will see that when you click the generated url is the following for example :

http://zemberek-web.appspot.com/zemberek.jsp?ts=1367076182039&giris=bnfhjfttgfhffgfg&islem=ASCII_TURKCE

giris=bnfhjfttgfhffgfg => is your string sent to the server.

So you can do in every programming language this following

http://zemberek-web.appspot.com/zemberek.jsp?ts=1367076182039&giris=MY_STRING&islem=ASCII_TURKCE

Don't forget to UTF-8 encode your string for the query string

UPDATE

Here is an example that I've made

public class MyRequester {

    /**
     * @param args
     */
    public static void main(String[] args) {

        HttpURLConnection conn = null;
        InputStream in = null;

        try {


            String textToSend = "Java is cool :)";
            String urlRequest = "http://zemberek-web.appspot.com/zemberek.jsp?ts=1367076182039&giris="+URLEncoder.encode(textToSend, "UTF-8")+"&islem=ASCII_TURKCE";

            System.out.println(urlRequest+"\n");

            conn = (HttpURLConnection) new URL(urlRequest).openConnection();
            in = conn.getInputStream();

            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder sb = new StringBuilder();
            String data = null;

            while ((data = reader.readLine()) != null) {
              sb.append(data);
            }

            System.out.println(sb.toString());


        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally {

            if(conn != null){
                conn.disconnect();
            }

            if(in != null){
                try {
                    in.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

        }



    }

}

Output in the console :

http://zemberek-web.appspot.com/zemberek.jsp?ts=1367076182039&giris=Java+is+cool+%3A%29&islem=ASCII_TURKCE

<taconite-root> <taconite-replace-children  contextNodeID="div" parseInBrowser="true"><div> Java <font color="#33AA33">iÅŸ</font> <font color="#FF0033">cool</font> :) </div> </taconite-replace-children> </taconite-root>

The result from the request is a XML document. According to my experience I would use SAX instead of Java XML native implementation.



来源:https://stackoverflow.com/questions/16253731/how-to-post-data-to-an-ajax-function-with-jsoup

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!