【问题标题】:Android Studio - Deleting Bulk Data From Backendless Data TableAndroid Studio - 从后端数据表中删除批量数据
【发布时间】:2016-12-02 03:19:31
【问题描述】:

我在后端服务器中有一个名为“LocalPhoneNum”的表。它包含三个对象。每个人都有姓名、电话号码和电子邮件。所有这三个对象都有相同的电子邮件。这是它的样子。

我需要弄清楚如何使用 Backendless REST API 中的“批量删除”选项以编程方式从我的 Android 应用程序中删除所有三个对象:https://backendless.com/documentation/data/rest/data_deleting_data_objects.htm

我希望在 Fragment 的 onCreateView() 方法实例化后立即进行删除。我的应用程序非常简单。启动一个 Fragment,调用一个 ASyncTask 类,并在后台删除数据。我的问题是我没有很多经验对服务器进行这些类型的调用,并且根本不知道正确的语法才能正常工作。我一直在到处寻找,但找不到明确的答案。

这是我目前所拥有的:

  1. 我的 Fragment 类包含一个名为 API_URL 的私有字符串,其中包含根据此处找到的 Backendless 指令删除对象的适当 URL:

这就是我的片段类的样子:

public class ContactsFragments extends Fragment {
private View view;
private final String API_URL = "https://api.backendless.com/v1/data/bulk/LocalPhoneNum?where%3DuserEmailID%3Dmark@gmail.com";

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    view =  inflater.inflate(R.layout.fragment_contacts_fragments, container, false);

    new DeleteBulkFromBackEnd().execute();

    return view;
}}

这是被调用来完成工作的 ASyncTask() 类:

class DeleteBulkFromBackEnd extends AsyncTask<Void,Void,String>{
    StringBuilder stringBuilder;

    @Override
    protected String doInBackground(Void... params) {
        HttpURLConnection urlConnection = null;


        try {
            URL url = new URL(API_URL);
            urlConnection = (HttpURLConnection)url.openConnection();

         urlConnection.setRequestProperty( "application-id","12345678" );
            urlConnection.setRequestProperty( "secret-key","12345678" );
            urlConnection.setRequestProperty( "application-type", "REST" );
            urlConnection.connect();



        } catch (MalformedURLException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }finally {
            urlConnection.disconnect();
        }

        return null;
    }

}

我的主要问题是,我在语法上缺少什么?当我将我的应用程序使用的 url (https://api.backendless.com/v1/data/bulk/LocalPhoneNum?where%3DuserEmailID%3Dmark@gmail.com) 复制并粘贴到浏览器中时,页面显示: {"code":2002,"message":"版本被禁用或提供了错误的应用信息(应用ID或密钥)"}

显然缺少某些东西,但我不知道如何从 A 点连接到 B 点。

本教程还提到了请求标头。虽然我在教程(上面的链接)中有它要求的所有信息(应用程序 ID、密钥、应用程序类型),但我不确定如何将它们合并到我的代码中?

如果有人知道我做错了什么或可以帮助我,我将不胜感激。希望这是足够的细节。

【问题讨论】:

    标签: android android-fragments backendless mbaas


    【解决方案1】:

    您需要在 HttpURLConnection 对象上使用“setRequestProperty”方法:

    urlConnection.setRequestProperty( "application-id", "VALUE" );
    urlConnection.setRequestProperty( "secret-key", "VALUE" );
    

    此外,URL 中的电子邮件地址值(特别是在“where”参数中)必须用单引号括起来,这也必须是 URL 编码的。这就是它的样子:

    https://api.backendless.com/v1/data/bulk/LocalPhoneNum?where=userEmailD%3D%27mark%40gmail.com%27
    

    在浏览器中输入该值不会有任何作用。由于浏览器会将其作为 GET 请求(而不是 DELETE)发送,并且不会发送任何必需的标头。

    【讨论】:

    • 嘿,马克,我非常接近,但仍然没有让应用程序删除表。我在上面的 ASyncTask 类中添加了您的代码,并更改了 URL 以反映您的。当我运行该应用程序时,我的 Logcat 中出现以下日志错误:java.io.FileNotFoundException:api.backendless.com/v1/data/bulk/…。我不确定 URL 是否符合预期。您能否看一下代码,语法现在看起来吗?我错过了什么?我真的很感激帮助。谢谢。
    • 另外,我不断收到 404 响应代码。所以它正在与服务器通信,但没有找到任何东西。我想这是有道理的,因为单独的 URL 在常规浏览器中不会导致任何地方。有没有我遗漏的代码?
    • 请求方法必须是DELETE。文档在那里说。您的代码缺少 urlConnection.setRequestMethod("DELETE");
    • 马克,你就是那个男人。谢谢您的帮助!我实际上从未处理过访问 REST API,因此不知道任何正确的语法。但这行得通!也喜欢 Backendless,太棒了。
    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 2021-12-11
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多