登录应用程序上的HTTP发布请求

时间:2019-02-28 13:48:53

标签: java android json http

我无法发送HTTP Post请求。我正在开发一个登录应用程序,该应用程序应使用适当的凭据从后方法API链接登录。登录后,下一个活动应显示API(JSON)中存在的其他信息。

任何人都可以通过发送任何参考文献或提供示例代码来指导我进行此操作。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码登录。由于Android不允许您使用Main Thread进行网络连接,因此使用AsyncTask。但是请谨慎使用Async Task。这些是泄漏内存的好方法。 另外,您始终可以使用Firebase Auth API来方便登录,这更安全,更容易,无需担心服务器端编程,并且只需要很少的代码即可。

public class RegistryHelper extends AsyncTask<String, Void, String> {
public static final String link = "http://www.yourlink.com/login.php";
public String data = null;

public RegistryHelper() {
}

@Override
protected void onPreExecute() {
}

@Override
protected String doInBackground(String... params) {
    try {
        URL url = new URL(link);
        data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(params[0], "UTF-8") + "&"
                + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(params[1], "UTF-8");
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);
        conn.setConnectTimeout(20000);
        OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
        writer.write(data);
        writer.flush();
        BufferedReader read = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line = null;
        StringBuffer sb = new StringBuffer();
        while ((line = read.readLine()) != null) {
            sb.append(line);
        }
        return sb.toString();
    } catch (Exception e) {
        e.printStackTrace();
        return e.toString();
    }
}

@Override
protected void onPostExecute(String result) {
    if (result.equals("LOGIN_SUCCESS")) {
        //Your action
    } else {
        //Your else action
    }
}

}