2016-07-27 5 views
1

У меня есть таблица под названием «LocalPhoneNum» на сервере Backendless. Он содержит три объекта. Каждый из них имеет имя, номер телефона и адрес электронной почты. Все три из этих объектов имеют одинаковое электронное письмо. Вот как это выглядит.Android Studio - Удаление массивных данных из таблицы данных без перегиба

enter image description here

Мне нужно, чтобы выяснить, как удалить все три объекта программно из моего Android приложения с помощью «Bulk Удалить» вариант найти в API Backendless REST: https://backendless.com/documentation/data/rest/data_deleting_data_objects.htm

Я хотел бы для того, чтобы удаление произошло, как только будет создан метод onCreateView() моего фрагмента. Мое приложение очень простое. Запускается Фрагмент, вызывается класс ASyncTask, и данные удаляются в фоновом режиме. Моя проблема заключается в том, что у меня нет большого опыта, делающего эти типы вызовов на сервере и просто не знаю правильного синтаксиса для этого. Я искал везде, но не могу найти чистый ответ.

Вот то, что я до сих пор:

  1. Мой класс Фрагмент содержит личное строку под названием API_URL, которая содержит соответствующий URL, чтобы удалить объекты в соответствии с инструкциями Backendless найти здесь: enter image description here

Это то, что выглядит мой фрагмент класса как:

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

@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; 
}} 

H ERE является 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%[email protected]), в браузере отображается страница: {"code": 2002, "message": "Версия отключена или предоставляется неверная информация о приложении (идентификатор приложения или секретный ключ) "}

явно что-то не хватает, но я не знаю, как сделать соединение от точки а до точки В.

в учебнике также упоминает заголовки запроса. Хотя у меня есть вся информация, которую он запрашивает (идентификатор приложения, секретный ключ, тип приложения) в учебнике (ссылка выше), я не уверен, как включить их в свой код?

Если кто-то знает, что я делаю неправильно или могу помочь, я был бы очень признателен. Надеюсь, этого достаточно.

ответ

2

Вы должны использовать метод «setRequestProperty» на объекте HttpURLConnection:

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

Кроме того, значение адреса электронной почты в URL (в частности, в «где» аргумент) должен быть в одинарные кавычки, который также должен быть закодирован в URL. Вот как это должно выглядеть:

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

Ввод этого значения в браузер ничего не сделает. Поскольку браузер отправит его как запрос GET (вместо DELETE), и ни один из необходимых заголовков не будет отправлен.

+0

Эй, Марк, я очень близко, но я все еще не получаю приложение, чтобы удалить таблицу.Я добавил ваш код в свой класс ASyncTask выше и изменил URL-адрес, чтобы отразить ваш. Когда я запускаю приложение, я получаю следующую ошибку журнала в своем Logcat: java.io.FileNotFoundException: https://api.backendless.com/v1/data/bulk/LocalPhoneNum?where=userEmailD%3D%27mark%40gmail. ком% 27. Я не уверен, что этого можно ожидать с помощью URL-адреса. Не могли бы вы взглянуть на код, выглядит ли синтаксис прямо сейчас? Что мне не хватает? Я очень ценю помощь. Спасибо. –

+0

Кроме того, я продолжаю получать код ответа 404. Так что это общение с сервером, но ничего не найдено. Я предполагаю, что это имеет смысл, поскольку только один URL-адрес не ведет нигде в обычном браузере. Есть ли код, который мне не хватает? –

+1

Метод запроса должен быть DELETE. Документация говорит об этом прямо там. В коде отсутствует urlConnection.setRequestMethod ("DELETE"); –

 Смежные вопросы

  • Нет связанных вопросов^_^