当前位置: 首页 > 知识库问答 >
问题:

android应用程序中的Android-Studio-HTTP连接处理

陶成化
2023-03-14

我有麻烦了。我无法连接到MySQL服务器。我学习了这个教程simplifiedcoding.net/android-php-mysql-login-tutorial-android-login-app-3/,我想做一个简单的PHP MySQL登录。但有些东西,如'NameValuePair'、'BasicNameValuePair'、'HttpClient'、'HttpPost'、'HttpResponse'、'HttpEntity'、'UrlenCodedFormEntity'等,则不推荐使用。我想问一下,有人能把这个编码正确吗?还是帮我?

下面是无法正常工作的代码:(谢谢您的帮助)

@Override
            protected String doInBackground(String... params) {
                String uname = params[0];
                String pass = params[1];

                InputStream is = null;
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                nameValuePairs.add(new BasicNameValuePair("username", uname));
                nameValuePairs.add(new BasicNameValuePair("password", pass));
                String result = null;

                try{
                    HttpClient httpClient = new DefaultHttpClient();
                    HttpPost httpPost = new HttpPost("site.com/login.php");
                    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                    HttpResponse response = httpClient.execute(httpPost);

                    HttpEntity entity = response.getEntity();

                    is = entity.getContent();

                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
                    StringBuilder sb = new StringBuilder();

                    String line = null;
                    while ((line = reader.readLine()) != null)
                    {
                        sb.append(line + "\n");
                    }
                    result = sb.toString();
                } catch (ClientProtocolException e) {
                    e.printStackTrace();
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return result;
            }

共有1个答案

弘和同
2023-03-14

实际上你发布的链接是从我的网站。当我写这篇教程的时候,这些课程并没有被弃用。如果你会检查我的网站,那么我已经张贴了一个更新的教程。

要向web服务器发送http post请求,可以使用以下代码。

public class RequestHandler {
public String sendPostRequest(String requestURL,
                              HashMap<String, String> postDataParams) {
    URL url;

    StringBuilder sb = new StringBuilder();
    try {
        url = new URL(requestURL);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setReadTimeout(15000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);

        OutputStream os = conn.getOutputStream();

        BufferedWriter writer = new BufferedWriter(
                new OutputStreamWriter(os, "UTF-8"));
        writer.write(getPostDataString(postDataParams));

        writer.flush();
        writer.close();
        os.close();
        int responseCode = conn.getResponseCode();

        if (responseCode == HttpsURLConnection.HTTP_OK) {

            BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            sb = new StringBuilder();
            String response;
            while ((response = br.readLine()) != null){
                sb.append(response);
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
    return sb.toString();
}

private String getPostDataString(HashMap<String, String> params) throws UnsupportedEncodingException {
    StringBuilder result = new StringBuilder();
    boolean first = true;
    for (Map.Entry<String, String> entry : params.entrySet()) {
        if (first)
            first = false;
        else
            result.append("&");

        result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
        result.append("=");
        result.append(URLEncoder.encode(entry.getValue(), "UTF-8"));
    }

    return result.toString();
}
}

现在,您需要做的只是在主活动中创建一个AsyncTask和doInBackGround方法

更多详情请访问Android PHP mysql-crud操作

 类似资料:
  • 我想用“OpenOrCreateDatabase”创建一个SQLLite数据库。问题是,我在创建一个新表时出现了一个错误。 这是我的代码: 怎么了? 多谢!

  • 我正在使用Firebase GMS服务开发android应用程序。 我试着按照他们的教程去做,我按照他们说的做了项目,下载了json文件。 但当我尝试将我的应用程序连接到Firebase时。他们告诉我错误 无法解析Android应用程序模块的Gradle配置。解析gardle构建issuse和/或重新同步。 然而,我认为我的等级脚本是完美的(我会把它们写在页面的底部) 这是我的等级构建控制台 这是

  • 免责声明:我知道人们通常不会这样做,我使用SQL数据库是出于成本原因,而且我对编程比较陌生。 我正在尝试从我的Android Studio应用程序向我的MariaDB数据库发送SQL脚本。我目前正在为MariaDB实现一个Java数据库连接(JDBC)驱动程序,但我不确定需要包括什么。 我去了JDBC MariaDB驱动程序的下载网站,但是有很多jar文件,我可以选择下载。你怎么知道你需要哪一个,

  • 我创建了一个android wear应用程序,并上传到play Store。当安装在手机上时,它不会自动在连接的android设备上安装wear应用程序(在本例中是Moto360)。我三次检查了android wear和android phone项目中的权限、应用程序id和软件包名称。它们是一样的。由于谷歌不允许在开发过程中安装手机应用程序时自动安装android wear应用程序的功能,上传到p

  • 谁能告诉我这个错误与什么有关,以及如何修复它? 无法解析Android应用程序模块的Gradle配置。解决gradle构建问题和/或重新同步。(图片) 我已经按照谷歌在Gradle文件中的说明做了所有事情,并对其进行了同步,但没有任何帮助。Android Studio 4.2 有错误的图片

  • 我正在制作一个用户登录应用程序,当执行模拟器时,我可以注册用户,验证用户在我的数据库中的股票,但是当我在手机上执行应用程序时,它不能连接到我的数据库。 这是我与数据库的连接代码: