【问题标题】:How to create parameter in HttpURLConnection that can stored string outside class如何在 HttpURLConnection 中创建可以在类外存储字符串的参数
【发布时间】:2017-11-29 03:35:44
【问题描述】:

我是 android 新手,曾尝试在互联网上找到任何参考/教程,但尚未解决我的问题

我有这个代码来显示价值:

List<Contact> contacts = db.test();
for (Contact cn : contacts) {
    String log = "Audit Name "+cn.getName()+" ,CountAudit " + cn.getAudit()+" ,CountFlag "
            + cn.getFlag();
    if(String.valueOf(cn.getFlag()).equals(cn.getAudit())){
        Log.d("Berhasil", "Sama Cok");
    }
    Log.d("Name: ", log);
}

logcat 显示: Audit Name 12447 ,CountAudit 1 ,CountFlag 1

现在我需要创建 HttpURLConnection 可以将 Audit Name 值存储到 API

我正在创建新课程:

private class sendget extends AsyncTask<Void, String, Void >
{
    @Override
    protected Void doInBackground(String audit) {

        try {

            URL url = new URL("myurl"+"?"+ audit);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
            conn.setRequestProperty("Accept", "application/json");
            conn.setDoOutput(true);
            conn.setDoInput(true);

            DataOutputStream os = new DataOutputStream(conn.getOutputStream());
            //os.writeBytes(URLEncoder.encode(jsonParam.toString(), "UTF-8"));
            os.writeBytes(audit);

            os.flush();
            os.close();

            conn.disconnect();
        } catch (JSONException | IOException e) {
            e.printStackTrace();
        }
    }
}

但我的错误太多了,

我的目标是使用此代码:

List<Contact> contacts = db.test();
    for (Contact cn : contacts) {
        String log = "Audit Name "+cn.getName()+" ,CountAudit " + cn.getAudit()+" ,CountFlag "
                + cn.getFlag();
        if(String.valueOf(cn.getFlag()).equals(cn.getAudit())){
            // add this code to calling httpurlconnection class with parameter from cn.getName()
            sendget.execute(cn.getName);
            // so the complete url gonna be myurl?audit=12447
            Log.d("Berhasil", "Sama Cok");
        }
        Log.d("Name: ", log);
    }

请有人指导我创建适用于上述代码的HttpURLConnection 类,任何教程都会很高兴

【问题讨论】:

  • 您的意思是存储来自“for”循环的所有审计名称对吧?!
  • @ankitpatidar 是的,我的意思是存储所有审计名称以防标志计数和审计计数相等

标签: android rest httpurlconnection


【解决方案1】:

doInBackground 需要可变参数。例如,

private class sendget extends AsyncTask<Void, String, Void >
{
    @Override
    protected Void doInBackground(String... audit) {
        URL url = new URL("myurl"+"?"+ audit[0]);

但是,如果您要发送 JSON 数据,您应该 1) 考虑一次发送整个数组而不是单个值(您的设备电池会感谢您),以及 2) 使用 a different networking library。 (正确地)编写 AsyncTasks 基本上是在浪费时间。

顺便说一句,如果您尝试在手机上实现一个数据库以与 Web 服务器数据库同步 - 当其他设备更新您以外的 Web 服务器时,您将遇到很多问题自己的应用程序。 您如何收到更改通知?

【讨论】:

  • 实际上,我正在创建 android 代码以在 react-native 上使用它,所以我不知道如何在 react-native 中使用另一个网络库
  • 您已经在使用 Java 代码。 Gradle 可能包含您的 Android 项目所需的所有库。在那里添加它们。这与 React 无关
  • 不,这与反应无关,以防万一我在 android 中运行时出现问题,我可以使用本机模块将这些代码转换为反应
猜你喜欢
  • 1970-01-01
  • 2017-04-12
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 1970-01-01
  • 2011-07-06
相关资源
最近更新 更多