在android中进行改造?

时间:2016-10-05 06:13:27

标签: android retrofit retrofit2

我是Retrofit的新手。我怎样才能发送param并从下面的url中获取Json?

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());
        }
    });
}

我的ModelLogin

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

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}

我的RequestInterface_Login

public interface RequestInterface_Login {

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

我的JSONResponseLogin

public class JSONResponseLogin {
    private ModelLogin[] login;

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

但请告诉我NullPointerException

enter image description here

我从服务中得到json

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

2 个答案:

答案 0 :(得分: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")

中删除

答案 1 :(得分:0)

我正在撰写这篇文章,并在“机器人”中进行改造。使用我们最新的Retrofit库,此插件可用于将Retrofit集成到您的项目中。 在使用reftrofit之前,我们只需要按照一些步骤在Android studio中添加QAssist插件,这将减少您在Webservices集成方面的工作。

1.在Android工作室中添加(QAssist - Android Studio插件)Android插件。 (https://github.com/sakkeerhussain/QAssist)。: -

2.当我们完成插件后,我们需要重启我们的Android工作室。

3.检查您的Android工作室菜单栏您可以找到&#34; QAssist&#34;。

4.点击它并开始使用Retrofit Integrate。

5.现在我们需要:     - Web Api的BaseUrl     - 所有Api的积分。     - 样本请求和所有请求的响应。     - 完成这些步骤后,您的改造(QAssist / retrofit包在Project中生成)。

6.您可以在该软件包中找到A类和一个接口。

7.界面包含所有端点详细信息,Class将包含Retrofit连接详细信息。

8.我们只需要添加一个小代码来访问Api和Parse即Api&#39;响应数据模型。 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