java - 如何在 Android Listview 中登录网站并获取 json 数据?
问题描述
我有一个带有安全 php 登录页面的网页,如果我输入我的登录详细信息,它会重定向到 data.json 文件。
但是,如果您未通过身份验证,则 t 什么也没有显示?!
谁能告诉我代码或示例如何在android中进行身份验证以从服务器获取数据?我已经尝试让 get_data.php 可以输入 mysql 并将其转换为 json,但是我如何保护它,然后输入并在 android 应用程序中获取它?
解决方案
要进行登录,您可以使用 Jsoup 库https://jsoup.org/
final String USER_AGENT = "\"Mozilla/5.0 (Windows NT\" +\n" +
"\" 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.120 Safari/535.2\"";
String loginFormUrl = "https://page.com/login";
String loginActionUrl = "https://page.com/json";
String username = "email@gmail.com";
String password = "XXXX";
HashMap<String, String> cookies = new HashMap<>();
HashMap<String, String> formData = new HashMap<>();
Connection.Response loginForm = Jsoup.connect(loginFormUrl).method(Connection.Method.GET).userAgent(USER_AGENT).execute();
Document loginDoc = loginForm.parse(); // this is the document that contains response
cookies.putAll(loginForm.cookies()); // save the cookies, this will be passed on to next request
formData.put("commit", "Sign in");
formData.put("utf8", "e2 9c 93");
formData.put("login", username);
formData.put("password", password);
formData.put("authenticity_token", authToken);
Connection.Response homePage = Jsoup.connect(loginActionUrl)
.cookies(cookies)
.data(formData)
.method(Connection.Method.POST)
.userAgent(USER_AGENT)
.execute();
System.out.println(homePage.parse().html()); //The json response use this to iterate and draw
推荐阅读
- python - 如何以相同的距离减少matplot中的y轴
- java - 使用 OpenGL 将每个相机帧处理为位图
- html - 语义和非语义元素
- javascript - 为什么我在 Handlebars 中存在范围问题?
- c# - 在 iTextSharp 中保存 10,000 页后保存 PDF 文件很慢
- python - 无法在python生成的ubuntu中找到输出文件
- python - 使用带有可变文件名的 os.("start ...)。python
- android - 自定义首选项中的 TextView 未正确更新
- c - Ubuntu 和 CentOS 之间链接行为的差异
- apache-spark - 如何知道流式查询用于 Kafka 数据源的 Kafka 消费者组的名称?