Я не могу получить объекты JSON из URL REST API - PullRequest
0 голосов
/ 12 января 2019

Итак, я пытался извлечь файлы JSON, которые в основном являются сообщениями из моей базы данных. Они могут быть получены из DJango REST API, который я использую. Я могу получить доступ к URL-адресу и просмотреть доступные сообщения с любых устройств в моей сети. Однако я не могу получить их, чтобы они могли быть опубликованы в моем приложении для Android.

Мой журнал в postExecute моего AsyncTask не показывает никаких объектов JSON и просто пуст.

Он не возвращает никаких сообщений об ошибках в моем logcat, поэтому я не уверен, в чем проблема.

Я пытаюсь создать прототип типа социальной сети, в котором сообщения хранятся в базе данных внутри моей базы данных и извлекают их через API.

Я использую AsyncTask для подключения к моему URL и обработки там

Posts.java

public class Posts extends AppCompatActivity {

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_posts);

            PostsDetails postDetailsHelper = new PostsDetails();

            postsDoneBtn = (Button) findViewById(R.id.PostsDoneButton);

            postDetailsHelper.callPostDetails("192.168.0.18:8000/api/");

            postDetailsHelper.postDetailsCalled('n');

            postsDoneBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    startActivity(new Intent(Posts.this, MainActivity.class));

                }
            });
        }

        public class PostsDetails {

            // calls the execute for AsyncTask
            private void callPostDetails(String theurl){
                PostsHelper = new WSAdapter.SendPostsRequest();
                // sets if post details are called
                postDetailsCalled('y');
                // executes AsyncTask
                PostsHelper.execute(theurl);
            }

        }

}

WSAdapter.java

public class WSAdapter extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    static public class SendPostsRequest extends AsyncTask<String, String, String> {

        // Add a pre-execute thing
        HttpURLConnection urlConnection;

        @Override
        protected String doInBackground(String... params) {

            StringBuilder result = new StringBuilder();

            try {
                urlConnection = (HttpURLConnection) new URL(params[0]).openConnection();
                urlConnection.setRequestMethod("GET");
                urlConnection.connect();

                InputStream in = new BufferedInputStream(urlConnection.getInputStream());

                BufferedReader reader = new BufferedReader(new InputStreamReader(in));

                String line;
                while ((line = reader.readLine()) != null) {
                    result.append(line);
                }

            }catch( Exception e) {
                e.printStackTrace();
            }

            return result.toString();
        }

        @Override
        protected void onPostExecute(String result) {

            // expecting a response code fro my server upon receiving the POST data
            Log.e("TAG", result);

    }
}

1 Ответ

0 голосов
/ 14 января 2019

Вам необходимо добавить схему протокола к вашему URL: http://, https:// или любую другую, необходимую вам.
Так должно выглядеть так:

postDetailsHelper.callPostDetails("http://192.168.0.18:8000/api/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...