Android Studio - Удаление массовых данных из таблицы Backendless Data
У меня есть таблица с именем "LocalPhoneNum" на Backendless сервере. Он содержит три объекта. Каждый с именем, номером телефона и адресом электронной почты. Все три объекта имеют одинаковый адрес электронной почты. Вот как это выглядит.
Мне нужно выяснить, как программно удалить все три объекта из моего приложения для Android, используя параметр "Массовое удаление", найденный в Backendless REST API: https://backendless.com/documentation/data/rest/data_deleting_data_objects.htm
Я хотел бы, чтобы удаление произошло, как только будет создан экземпляр метода onCreateView() моего Fragment. Мое приложение очень простое. Запускается фрагмент, вызывается класс ASyncTask, а данные удаляются в фоновом режиме. Моя проблема в том, что у меня нет большого опыта совершения вызовов такого типа на сервере, и я просто не знаю правильный синтаксис, чтобы это работало. Я искал везде, но не могу найти чистый ответ.
Вот что у меня так далеко:
- Класс My Fragment содержит частную строку под названием API_URL, которая содержит соответствующий URL-адрес для удаления объектов в соответствии с инструкциями Backendless, найденными здесь:
Вот как выглядит мой фрагментный класс:
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":"Версия отключена или предоставлена неверная информация о приложении (идентификатор приложения или секретный ключ)"}
Ясно, что чего-то не хватает, но я не знаю, как установить соединение из пункта А в пункт Б.
В учебнике также упоминаются заголовки запросов. Хотя у меня есть вся информация, которую он запрашивает (идентификатор приложения, секретный ключ, тип приложения) в руководстве (ссылка выше), я не уверен, как включить их в свой код?
Если кто-то знает, что я делаю неправильно или может мне помочь, я был бы очень признателен. Надеюсь, этого достаточно.
1 ответ
Вам необходимо использовать метод setRequestProperty для объекта HttpURLConnection:
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), и ни один из требуемых заголовков не будет отправлен.