如何在HttpURLConnection中创建可以在类

时间:2017-11-29 03:35:45

标签: android rest httpurlconnection

我是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值存储到API

Audit Name

我正在创建新课程:

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课程,任何教程都会很高兴

1 个答案:

答案 0 :(得分:0)

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服务器时,您将遇到很多问题你自己的应用程序。  如何收到变更通知?