使用请求标头在Android中访问REST API

时间:2016-07-29 00:54:37

标签: android rest

关于访问REST API的代码的正确语法和顺序,我有一个问题。

我正在尝试访问我在名为backendless.com的mBaas上创建的数据库。 (以下数据信息特定于此mBaas,但我的问题更多是关于在Android中访问REST API的一般过程)

根据他们的批量删除教程(https://backendless.com/documentation/data/rest/data_deleting_data_objects.htm),我需要一个URL来查询我的数据库中的特定值,然后删除它。我有这个价值。它们还需要3个请求标头(application-id,密钥,应用程序类型)。我也有这些标题。

我在ASyncTask类中使用了所有这些信息,技术上应该打开url,设置请求标头,并调用REST API。我唯一的问题是,我不知道我是否错过了某种代码?我当前的代码是否按顺序排列?每次我的班级被执行,都没有任何反应。

我的URL也有一个log cat异常:java.io.FileNotFoundException:api.backendless.com/v1/data/bulk /...

当我将其放入浏览器时,URL不会导致任何内容,但我告诉它不应该因为浏览器将其作为GET请求发送。

无论如何,这是我的ASyncTask类,包含所有信息。有谁知道这段代码是否正确或我在这里遗漏了什么?我是制作这类电话的新手,并不真正了解请求标题在访问REST API时所发挥的作用。请告诉我。谢谢!

 class DeleteBulkFromBackEnd extends AsyncTask<Void,Void,String>{
   final String API_URL = "https://api.backendless.com/v1/data/bulk/LocalPhoneNum?where%3DuserEmailID%3Dmark@gmail.com";

    @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) {
            Log.d("Contact","ERROR " + e.toString() );//IO Exception Prints in log cat not recognizing URL
            e.printStackTrace();
        }finally {
            urlConnection.disconnect();
        }

        return null;
    }

}

2 个答案:

答案 0 :(得分:2)

我建议您使用okhttp轻松访问网络。

并检查响应代码和响应正文。

在build.gradle中:

myList = ...

您的AsyncTask将是这样的:

filter()

像这样执行AsyncTask:

filter

答案 1 :(得分:1)

正如我所评论的,这是解决方案:

 class DeleteBulkFromBackEnd extends AsyncTask<Void,Void,String>{
   final String API_URL = "https://api.backendless.com/v1/data/bulk/LocalPhoneNum?where%3DuserEmailID%3Dmark@gmail.com";

    @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.setRequestMethod("DELETE");

            urlConnection.connect();



        } catch (MalformedURLException e) {

            e.printStackTrace();
        } catch (IOException e) {
            Log.d("Contact","ERROR " + e.toString() );//IO Exception Prints in log cat not recognizing URL
            e.printStackTrace();
        }finally {
            urlConnection.disconnect();
        }

        return null;
    }

}