Android Studio - 从后端数据中删除批量数据 Table
Android Studio - Deleting Bulk Data From Backendless Data Table
我在 Backendless Server 中有一个名为 "LocalPhoneNum" 的 table。它包含三个objects。每个都有姓名、phone 号码和电子邮件。所有这三个 objects 都有相同的电子邮件。这是它的样子。
我需要弄清楚如何使用 Backendless REST API 中的 "Bulk Delete" 选项以编程方式从我的 Android 应用程序中删除所有三个 objects: https://backendless.com/documentation/data/rest/data_deleting_data_objects.htm
我希望在 Fragment 的 onCreateView() 方法实例化后立即进行删除。我的申请非常简单。启动一个 Fragment,调用一个 ASyncTask Class,并在后台删除数据。我的问题是我没有太多对服务器进行这些类型的调用的经验,而且根本不知道正确的语法才能起作用。我一直在到处搜索,但找不到明确的答案。
这是我目前的情况:
- 我的片段 class 包含一个名为 API_URL 的私有字符串,其中包含适当的 URL 以根据此处找到的 Backendless 说明删除 objects:
这就是我的片段 Class 的样子:
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:
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":"Version is disabled or provided wrong application info (application id or secret key)"}
显然缺少某些东西,但我不知道如何建立从 A 点到 B 点的连接。
本教程还提到了请求 Headers。虽然我在教程(Link 以上)中拥有它要求的所有信息(application-id、secret-key、app-type),但我不确定如何合并它们在我的代码中?
如果有人知道我做错了什么或者可以帮助我,我将不胜感激。希望这些足够详细了。
您需要在 HttpURL连接上使用 "setRequestProperty" 方法 object:
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)发送,并且发送了所需 headers 中的 none。
我在 Backendless Server 中有一个名为 "LocalPhoneNum" 的 table。它包含三个objects。每个都有姓名、phone 号码和电子邮件。所有这三个 objects 都有相同的电子邮件。这是它的样子。
我需要弄清楚如何使用 Backendless REST API 中的 "Bulk Delete" 选项以编程方式从我的 Android 应用程序中删除所有三个 objects: https://backendless.com/documentation/data/rest/data_deleting_data_objects.htm
我希望在 Fragment 的 onCreateView() 方法实例化后立即进行删除。我的申请非常简单。启动一个 Fragment,调用一个 ASyncTask Class,并在后台删除数据。我的问题是我没有太多对服务器进行这些类型的调用的经验,而且根本不知道正确的语法才能起作用。我一直在到处搜索,但找不到明确的答案。
这是我目前的情况:
- 我的片段 class 包含一个名为 API_URL 的私有字符串,其中包含适当的 URL 以根据此处找到的 Backendless 说明删除 objects:
这就是我的片段 Class 的样子:
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:
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":"Version is disabled or provided wrong application info (application id or secret key)"}
显然缺少某些东西,但我不知道如何建立从 A 点到 B 点的连接。
本教程还提到了请求 Headers。虽然我在教程(Link 以上)中拥有它要求的所有信息(application-id、secret-key、app-type),但我不确定如何合并它们在我的代码中?
如果有人知道我做错了什么或者可以帮助我,我将不胜感激。希望这些足够详细了。
您需要在 HttpURL连接上使用 "setRequestProperty" 方法 object:
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)发送,并且发送了所需 headers 中的 none。