如何从搜索栏向网站发送值并在Android Studio中接收数据列表

时间:2020-09-30 21:24:33

标签: android android-studio android-layout servlets jsoup

我正在研究一个学校项目,我必须在其中发送数据并获取响应。我被卡住了,因为我不知道该怎么做。 我尝试使用Jsoup发送数据,但响应为“ null”。 我已经在我的应用程序中创建了一个搜索栏,我想将该值从此搜索栏发送到下面提到的网站,并接收数据列表。

链接http://www.climatefinder.com/advanced_search/

我可以这样做吗?可能吗?另外,如果我做错了,请建议我正确的路径。

1 个答案:

答案 0 :(得分:0)

如果您真的希望这项作业变成一项艰巨的项目,那么您面前的任务就很艰巨了。最大的工作就是解析期望的返回值。

这是Java脚本将HTML <FORM>元素(包括在下面)发布到服务器。您将必须隔离这种形式的所有变量,并找出要在这些变量中插入值的内容。然后,您必须制定一个 HTTP GET请求

无论如何,:由于来自网络服务器的返回值是某种地图 AND ,因为返回的地图是Google API Map,因此还要做更多的工作来弄清楚这一点。

如果您想继续,并且已经可以阅读HTML FORMS,请选择值以向这些<FORM> <INPUT>变量分配一个您希望用于天气模式选择的值,然后调用Java -脚本。同样,JSoup可能无法解析返回的内容,因为这是Google Map的API,因此您必须通过选择 Java Script API for Google Maps 来解析响应。我所知道的唯一的 Java Script Parser 是古老的,被称为 Rhino Project

注意::表单的第一行显示网络服务器正在监听 # -这意味着它监听的是您检索到的相同URL该页面来自:

http://www.climatefinder.com/advanced_search/

祝你好运!

<form action="#" enctype="multipart/form-data" method="post">
    <table style="border-collapse:separate;border-spacing:10px;margin-bottom:30px;">
        <tr>
            <th>Variable</th><th>At least</th>
            <th></th>
            <th>At most</th>
        </tr>
        <tr>
            <td style="width:300px;">Average daily minimum temperature</td>
            <td style="width:75px;">
                <input id="tmnmin" name="tmnmin" type="hidden" value="-14.00" />
                <span id="tmnmintxt">-14.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="tmnslider"></div>
            </td>
            <td style="width:75px;">
                <input id="tmnmax" name="tmnmax" type="hidden" value="16.00" />
                <span id="tmnmaxtxt">16.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Average daily temperature</td>
            <td style="width:75px;">
                <input id="tmpmin" name="tmpmin" type="hidden" value="-22.00" />
                <span id="tmpmintxt">-22.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="tmpslider"></div>
            </td>
            <td style="width:75px;">
                <input id="tmpmax" name="tmpmax" type="hidden" value="11.00" />
                <span id="tmpmaxtxt">11.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Average daily maximum temperature</td>
            <td style="width:75px;">
                <input id="tmxmin" name="tmxmin" type="hidden" value="-20.00" />
                <span id="tmxmintxt">-20.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="tmxslider"></div>
            </td>
            <td style="width:75px;">
                <input id="tmxmax" name="tmxmax" type="hidden" value="26.00" />
                <span id="tmxmaxtxt">26.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Monthly precipitation</td>
            <td style="width:75px;">
                <input id="premin" name="premin" type="hidden" value="660.00" />
                <span id="premintxt">660.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="preslider"></div>
            </td>
            <td style="width:75px;">
                <input id="premax" name="premax" type="hidden" value="1330.00" />
                <span id="premaxtxt">1330.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Days with &gt;0.1mm rain per month</td>
            <td style="width:75px;">
                <input id="rd0min" name="rd0min" type="hidden" value="15.00" />
                <span id="rd0mintxt">15.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="rd0slider"></div>
            </td>
            <td style="width:75px;">
                <input id="rd0max" name="rd0max" type="hidden" value="31.00" />
                <span id="rd0maxtxt">31.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Wind speed</td>
            <td style="width:75px;">
                <input id="wndmin" name="wndmin" type="hidden" value="3.20" />
                <span id="wndmintxt">3.20</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="wndslider"></div>
            </td>
            <td style="width:75px;">
                <input id="wndmax" name="wndmax" type="hidden" value="7.00" />
                <span id="wndmaxtxt">7.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Sunshine as proportion of day length</td>
            <td style="width:75px;"><input id="sunpmin" name="sunpmin" type="hidden" value="0.00" />
                <span id="sunpmintxt">0.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="sunpslider"></div>
            </td>
            <td style="width:75px;">
                <input id="sunpmax" name="sunpmax" type="hidden" value="57.00" />
                <span id="sunpmaxtxt">57.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Days with ground frost per month</td>
            <td style="width:75px;">
                <input id="frsmin" name="frsmin" type="hidden" value="0.00" />
                <span id="frsmintxt">0.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="frsslider"></div>
            </td>
            <td style="width:75px;">
                <input id="frsmax" name="frsmax" type="hidden" value="17.00" />
                <span id="frsmaxtxt">17.00</span>
            </td>
        </tr>
        <tr>
            <td style="width:300px;">Relative humidity</td>
            <td style="width:75px;">
                <input id="rehmin" name="rehmin" type="hidden" value="0.00" />
                <span id="rehmintxt">0.00</span>
            </td>
            <td style="padding-top:0px;padding-left:20px;padding-right:20px;padding-bottom:0px;width:350px;">
                <div id="rehslider"></div>
            </td>
            <td style="width:75px;">
                <input id="rehmax" name="rehmax" type="hidden" value="53.00" />
                <span id="rehmaxtxt">53.00</span>
            </td>
        </tr>
    </table>
    <table style="border-collapse:separate;border-spacing:10px 0;text-align:center;margin-bottom:30px;">
        <tr>
            <th colspan="12">Criteria apply in:</th>
        </tr>
        <tr>
            <td style="">Jan</td>
            <td style="">Feb</td>
            <td style="">Mar</td>
            <td style="">Apr</td>
            <td style="">May</td>
            <td style="">Jun</td>
            <td style="">Jul</td>
            <td style="">Aug</td>
            <td style="">Sep</td>
            <td style="">Oct</td>
            <td style="">Nov</td>
            <td style="">Dec</td>
        </tr>
        <tr>
            <td style=""><input class="month" name="month1" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month2" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month3" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month4" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month5" type="checkbox" value="on" /></td>
            <td style=""><input checked="checked" class="month" name="month6" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month7" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month8" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month9" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month10" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month11" type="checkbox" value="on" /></td>
            <td style=""><input class="month" name="month12" type="checkbox" value="on" /></td>
        </tr>
    </table>

    <input class="btn btn-primary highlightbutton" id="submitadvanced" name="submitmetricadvanced" type="submit" value="Find Places with this Climate" />
    <div style="display:none;">
        <input name="_formkey" type="hidden" value="bf4ad5df-fce3-4bed-b7e2-42f52c0bb431" />
        <input name="_formname" type="hidden" value="newform" />
    </div>
</form>

再次,反应更加毛茸茸。您将必须能够使用 Rhino Java Script Parser ,或使用您自己的字符串解析算法。这是与 Google Maps API

一起使用的Java脚本响应
  var markerJEG = new google.maps.Marker({
    position: {lat: 68.7218, lng: -52.7847 },
    map: map,
    title: "Aasiaat, Greenland",
    icon: { path: google.maps.SymbolPath.CIRCLE, scale: 4, strokeColor: 'black', fillColor: 'red', strokeWeight: 1, fillOpacity: 1 },
  });
  google.maps.event.addListener(markerJEG, 'click', function() {
    infowindow.setContent('Aasiaat, Greenland<br/><a href="/places/BGAA" target="_blank">More info</a>');
    infowindow.open(map,markerJEG);
  });

  var markerUAK = new google.maps.Marker({
    position: {lat: 61.1605, lng: -45.426 },
    map: map,
    title: "Narsarsuaq, Greenland",
    icon: { path: google.maps.SymbolPath.CIRCLE, scale: 4, strokeColor: 'black', fillColor: 'red', strokeWeight: 1, fillOpacity: 1 },
  });
  google.maps.event.addListener(markerUAK, 'click', function() {
    infowindow.setContent('Narsarsuaq, Greenland<br/><a href="/places/BGBW" target="_blank">More info</a>');
    infowindow.open(map,markerUAK);
  });