首页 > 解决方案 > 如何在 Android Listview 中登录网站并获取 json 数据?

问题描述

我有一个带有安全 php 登录页面的网页,如果我输入我的登录详细信息,它会重定向到 data.json 文件。

但是,如果您未通过身份验证,则 t 什么也没有显示?!

谁能告诉我代码或示例如何在android中进行身份验证以从服务器获取数据?我已经尝试让 get_data.php 可以输入 mysql 并将其转换为 json,但是我如何保护它,然后输入并在 android 应用程序中获取它?

标签: javaphpandroidmysqlauthentication

解决方案


要进行登录,您可以使用 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

推荐阅读