1

我在无后端服务器中有一个名为“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、密钥、应用程序类型),但我不确定如何将它们合并到我的代码中?

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

4

1 回答 1

2

您需要在 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)发送,并且不会发送任何必需的标头。

于 2016-07-28T14:27:00.203 回答