Итак, я занимаюсь своими проблемами уже некоторое время с помощью Интернета, но у меня был минимальный успех.Использование Android Volley для поиска в поисковой строке веб-сайта
Проблема: я использую Android с библиотекой Volley, чтобы попытаться выполнить поиск с двух веб-сайтов. На рассматриваемых веб-сайтах нет открытого API или что-либо, чтобы увидеть, как я могу выполнять поиск. Я попытался проверить HTTP-запросы в Firefox, открыв F12.
Website 1 Использование протокола HTTPS. Мне нужно искать здесь, используя номер Vnr. Из результирующей страницы я проанализирую название (имена) препаратов.
Website 2 Использование протокола HTTP. Отсюда я бы поискал, используя найденное название препарата, и я получил бы описание препарата (на финском языке).
для сайта 2 Я попытался следующий код, который успешно возвращает HTML-файл страницы результата:
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://www.laakeinfo.fi/Medicine.aspx?m=758&d=2111337&i=ORION+PHARMA_RESILAR_RESILAR+oraaliliuos+3+mg/ml";
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("HTTPTEST", "Response len: " + response.length());
writeToFile(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("HTTPTEST", "Error: " + error.getMessage());
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("i", "Resilar");
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/x-www-form-urlencoded");
return params;
}
};
queue.add(request);
Теперь это работает, потому что точки URL прямо туда, где я хочу его. Если бы я изменил URL-адрес на "http://www.laakeinfo.fi/Search.aspx"
и в getParams() я бы вместо этого использовал params.put("Search1:txtSearch", "Resilar");
(содержимое панели поиска), он просто возвращает страницу поиска.
Теперь мои вопросы, что я пытаюсь сделать возможным? Я не слишком хорошо разбираюсь в веб-материалах, но, похоже, страницы скрывают логику поиска и все, что затрудняет выполнение поисков. Если это действительно возможно, как я могу это сделать? Любые намеки были бы оценены в этой попытке.
Большое спасибо за советы и поддержку! Я действительно получил его работу, включив все, что вы сказали (который был найден с помощью Network Inspector), и отменил Content-Type. Как-то это все испортило. Кроме того, поскольку это форма, мне пришлось использовать POST вместо GET :) – Mootpoint