404 не найден при подключении к конечной точке ядра приложений Google - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь подключиться к конечной точке Google в приложении Android, но когда я запускаю приложение на эмуляторе или на реальном устройстве, оба не работают, и я получаю ошибку 404, не найденную. поэтому я создаю кнопку, которая реализует асинхронную связь:

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

    }

    public void tellJoke(View view) {

        EndpointsAsyncTask asyncTask = new EndpointsAsyncTask(this);
        asyncTask.execute();
}
}

и это класс asynctask:

public class EndpointsAsyncTask extends AsyncTask<Void, Void, String> {
    private static MyApi myApiService = null;
    private Context mContext;

    public EndpointsAsyncTask (Context context){
        mContext = context;
    }

    @Override
    protected String doInBackground(Void... params) {
        if(myApiService == null) {  // Only do this once
            MyApi.Builder builder = new
                    MyApi.Builder(AndroidHttp.newCompatibleTransport(),
                    new AndroidJsonFactory(), null)
                    // options for running against local devappserver
                    // ­ 10.0.2.2 is localhost's IP address in Android emulator
                    // ­ turn off compression when running against local devappserver
                    .setRootUrl("http://10.0.2.2:8080/_ah/api/")
                    .setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
                        @Override                         public void initialize(AbstractGoogleClientRequest<?>
                                                                                         abstractGoogleClientRequest) throws IOException {
                            abstractGoogleClientRequest.setDisableGZipContent(true);
                        }
                    });
            // end options for devappserver

            myApiService = builder.build();
        }


        try {
            return myApiService.jokes().execute().getData();
        } catch (IOException e) {
            return e.getMessage();
        }
    }


    @Override
    protected void onPostExecute(String result) {
        Intent intent = new Intent(mContext, AndroidLibraryActivity.class);

        intent.putExtra("jokes", result);
        mContext.startActivity(intent);
    }
}

и в библиотеке Android я получил такой результат:

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

        TextView jokes;
        jokes = findViewById(R.id.jokes);

        Intent intent = getIntent();
        String joke = intent.getStringExtra("jokes");

            jokes.setText(joke);

    }

и это моя конечная точка:

@Api(
        name = "myApi",
        version = "v1",
        namespace = @ApiNamespace(
                ownerDomain = "backend.builditbigger.gradle.udacity.com",
                ownerName = "backend.builditbigger.gradle.udacity.com",
                packagePath = ""
        )
)
public class MyEndpoint {

    /** A simple endpoint method that takes a name and says Hi back */

    @ApiMethod(name = "jokes")
    public MyBean jokes(){
        MyBean response = new MyBean();
        Joker jokes = new Joker();
        String jokesResult = jokes.getJoke();
        response.setData(jokesResult);
        return response;
    }

также я прочитал много решений, но у меня ничего не работает, и, кстати, когда я запускаю его на реальном устройстве, я меняю rooturl на эту ссылку:

http://builditbigger -id.appspot.com / _ah / апи /

но это не работает, так как заставить его работать хотя бы на симуляторе!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...