1

バックエンドレス サーバーに「LocalPhoneNum」というテーブルがあります。3 つのオブジェクトが含まれています。それぞれに名前、電話番号、メールアドレスが記載されています。これら 3 つのオブジェクトはすべて同じ電子メールを持っています。これがどのように見えるかです。

ここに画像の説明を入力

バックエンドレス REST API ( https://backendless.com/documentation/data/rest/data_deleting_data_objects.htm ) にある「一括削除」オプションを使用して、Android アプリケーションから 3 つのオブジェクトすべてをプログラムで削除する方法を理解する必要があります。

Fragment の onCreateView() メソッドがインスタンス化されるとすぐに削除が行われるようにしたいと考えています。私のアプリケーションはとてもシンプルです。フラグメントが起動され、ASyncTask クラスが呼び出され、データがバックグラウンドで削除されます。私の問題は、サーバーに対してこれらのタイプの呼び出しを行った経験があまりなく、これが機能するための正しい構文がわからないことです。私はどこでも検索してきましたが、明確な答えが見つかりません。

これが私がこれまでに持っているものです:

  1. 私の Fragment クラスには、API_URL と呼ばれるプライベート文字列が含まれています。これには、次のバックエンドレスの手順に従ってオブジェクトを削除するための適切な 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

その値をブラウザに入力しても何も起こりません。ブラウザーはそれを (DELETE ではなく) GET 要求として送信するため、必要なヘッダーは送信されません。

于 2016-07-28T14:27:00.203 に答える