Переустановить в андроид?

Я новичок в дооснащении. Как я могу отправить параметр и получить Json из приведенного ниже URL-адреса?

http://xxx:8087/courier.svc/login?username=jim&password=123456

Мне нужна ссылка на учебник.

Этот код находится в моем MainActivity :

private void loadJSON(String username, String password) {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://192.168.8.11:8087/sample.svc/")
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    RequestInterface_Login request = retrofit.create(RequestInterface_Login.class);
    Call<JSONResponseLogin> call = request.getJSON(username, password);
    call.enqueue(new Callback<JSONResponseLogin>() {
        @Override
        public void onResponse(Call<JSONResponseLogin> call, Response<JSONResponseLogin> response) {

            JSONResponseLogin jsonResponse = response.body();
            data = new ArrayList<>(Arrays.asList(jsonResponse.getLogin()));
        }

        @Override
        public void onFailure(Call<JSONResponseLogin> call, Throwable t) {
            Log.d("Error", t.getMessage());
        }
    });
}

My ModelLogin :

public class ModelLogin {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}

My RequestInterface_Login :

public interface RequestInterface_Login {

    @GET("/login/{username}/{password}")
    Call<JSONResponseLogin> getJSON(@Path("username") String username, @Path("password") String password);
}

My JSONResponseLogin :

public class JSONResponseLogin {
    private ModelLogin[] login;

    public ModelLogin[] getLogin() {
        return login;
    }
}

Но поймай меня NullPointerException!

введите здесь описание изображения

Я получаю json от службы ниже:

{"Key":null,"Response":1}

person Community    schedule 05.10.2016    source источник
comment
Является ли обращение к API в виде поля или ответа JSON или его нужно вводить непосредственно в URL-адресе?   -  person kshitij jain    schedule 05.10.2016
comment
Моя библиотека: скомпилировать 'com.squareup.retrofit2:retrofit:2.1.0' скомпилировать ('com.squareup.retrofit2:converter-gson:2.0.0-beta4') {исключить модуль: 'retrofit'}   -  person    schedule 05.10.2016
comment
Я не говорю о дооснащении. Если бы вы могли поделиться фактической ссылкой API, я могу помочь вам с этим   -  person kshitij jain    schedule 05.10.2016
comment
Взгляните на эту документацию. https://futurestud.io/tutorials/android-basic-authentication-with-retrofit И есть еще много простых примеров, как обрабатывать http-параметры   -  person Vall0n    schedule 05.10.2016
comment
@kshitij Джейн . Я отредактировал свой вопрос.   -  person    schedule 05.10.2016
comment
Привет, @JoJoRoid, пожалуйста, добавь свой журнал ошибок.   -  person Mayur Patel    schedule 05.10.2016
comment
Пожалуйста, измените свой класс, добавив (@)SerializedName(fieldName). Пример: pratikbutani.com/2016. /05/   -  person Mayur Patel    schedule 05.10.2016


Ответы (2)


Прежде чем вы вызовете модификацию, вы можете просто распечатать URL-адрес, а затем загрузить URL-адрес в браузер и посмотреть, какой ответ придет, вы можете добавить журнал в строку ниже перед call.enqueue(new Callback<JSONResponseLogin>()

Log.e(TAG, "API URL: " + call.request().url());

Проверьте свой ответ И дайте мне знать, я помогу вам ... потому что я использую модернизацию в своих 3 проектах.

Сделайте так ... в интерфейсе

 @GET("/courier.svc/login?)
 Call<JSONResponseLogin> getJSON(@Query("username") String username,
                                 @Query("password") String password);

и удалить его из базы .baseUrl("http://192.168.8.11:8087")

person Rajesh Gauswami    schedule 05.10.2016
comment
Он показывает мне: 192.168.8.11:8087/login/jim/123456, но мне нужно на 192.168.8.11:8087/courier.svc/ - person ; 05.10.2016
comment
я отредактировал ответ, посмотри, сделай это, и дай мне знать, работает ли это @JoJoRoid - person Rajesh Gauswami; 05.10.2016
comment
Теперь я вижу истинный URL-адрес. Но получаю ошибку java.lang.NullPointerException: storage == null Я думаю, что это для {Key:null,Response:1} ? - person ; 05.10.2016
comment
Вы используете какую-либо аутентификацию, такую ​​​​как apikey или секретный ключ, для вызова URL-адреса? @JoJoRoid - person Rajesh Gauswami; 05.10.2016
comment
сначала запустите API в getpostman.com и посмотрите ответ, убедитесь, что вам не требуется дополнительный запрос для вызова URL @JoJoRoid - person Rajesh Gauswami; 05.10.2016
comment
Когда я войду в систему, дайте мне секретный ключ. Но сейчас мне не нужно секретный ключ. - person ; 05.10.2016
comment
Хорошо, так что используйте API в почтальоне и получите оттуда правильный ответ и дайте мне знать, что вы должны передать в параметре, потому что теперь все правильно в модификации. есть ли какой-нибудь заголовок, который вы должны передать? - person Rajesh Gauswami; 05.10.2016
comment
Не решайте мою проблему, дайте мне java.lang.NullPointerException: storage == null. Но мой адрес верен. - person ; 05.10.2016

Я пишу этот пост о «Модернизации в Android», используя нашу последнюю библиотеку Retrofit. Этот плагин можно использовать для интеграции модернизации в ваш проект. Прежде чем использовать reftrofit, нам просто нужно выполнить несколько шагов, чтобы добавить плагины QAssist в Android Studio, что уменьшит ваши усилия по интеграции веб-сервисов.

1. Добавьте (QAssist — Android Studio Plugin) Android-плагин в вашу Android-студию. ( https://github.com/sakkeerhussain/QAssist).:-

2. Когда мы закончим с плагином, нам нужно перезапустить нашу Android-студию.

3. Проверьте панель меню Android Studio. Вы можете найти «QAssist».

4.Нажмите на это и начните с модернизации интеграции.

5. Теперь нам нужно: - BaseUrl веб-API - все точки доступа API. - Образец запроса и ответ на все запросы. - После выполнения этих шагов ваш reftrofit (пакет QAssist/retrofit генерируется внутри проекта).

6. Вы можете найти класс и один интерфейс внутри этого пакета.

7. Интерфейс содержит все сведения о конечных точках, а класс будет содержать сведения о модифицированном соединении.

8. Нам просто нужно добавить небольшой код для доступа и API и анализа ответа API на модель данных. 9. Используйте этот образец функции для вызова API.

private void demoRetroFitCall() {
        APIService apiService = RetrofitManager.getInstance(this);
        //APIService apiService = RetroFitApiClient.getClient().create(APIService.class);
        Call<ModelData> call = apiService.TestGet();
        call.enqueue(new Callback<ModelData>() {
            @Override
            public void onResponse(Call<ModelData> call, Response<ModelData> response) {
                Log.d("TAG", "Data recived in response.body");            
                }

            @Override
            public void onFailure(Call<ModelData> call, Throwable t) {
                Log.e("TAG", t.toString());            
                }
        });
    }
56 - voda
person A-Droid Tech    schedule 29.11.2017