如何在android中使用Retrofit库获取Get和Post方法?

时间:2015-12-16 12:20:04

标签: android retrofit

我需要使用Retrofit库来解析URL中的数据并通过传递一些Parameters将数据发布到服务器。我尝试了一些链接,但我不明白这一点。任何人都可以解释如何使用改造吗?并建议与最新版本相关的任何最佳改造链接。

提前致谢。

3 个答案:

答案 0 :(得分:4)

您好曾在本博客中查看此博客,并解释了与复古相关的所有内容https://futurestud.io/blog/retrofit-getting-started-and-android-client

答案 1 :(得分:2)

我正在开发一个原型应用程序,我测试了Retrofit。我将为您提供相关的代码和要求。

private void testRetrofit() throws IOException
{
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("http://jsonplaceholder.typicode.com")
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    DemoEndpointInterface endpoint = retrofit.create(DemoEndpointInterface.class);
    Call<DemoUser> call = endpoint.getUser("1");

    DemoUser user = call.execute().body();

    Log.d("$$$$ID : ", user.getId());
    Log.d("$$$$User ID : ", user.getUserId());
    Log.d("$$$$Title : ", user.getTitle());
    Log.d("$$$$Body : ", user.getBody());

    //Toast.makeText(this.getApplicationContext(), user.getTitle(), Toast.LENGTH_SHORT).show();

}

声明如下所述的接口:

public interface DemoEndpointInterface {
@GET("/posts/{userId}")
Call<DemoUser> getUser(@Path("userId") String userid);   }

DemoUser.java如下:

public class DemoUser {
String userId;
String id;
String title;
String body;

public DemoUser(String userId, String id, String title, String body) {
    this.userId = userId;
    this.id = id;
    this.title = title;
    this.body = body;
}

public String getUserId() {
    return userId;
}

public void setUserId(String userId) {
    this.userId = userId;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getBody() {
    return body;
}

public void setBody(String body) {
    this.body = body;
}
}

在app level gradle文件中声明依赖项:

compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'

希望这会有所帮助。让我们知道任何问题。

感谢。

答案 2 :(得分:0)

在我解决这个问题之前,这个改造并没有很好地支持新版本,所以改造19很酷。 我知道如何将json插入到类模型中。所以我会告诉你如何传递$ DepartmentID = $ _ GET [&#39; DepartmentID&#39;]

首先初始化它以使用api,folder1 / getDepartmentDetailsS​​ingle.php?departmentID = departmentID

public interface RetrofitInternetApi {
@GET("/folder1/getDepartmentDetailsSingle.php")
    void getDepartmentByID(@Query("departmentID") int departmentID,  Callback<Response> callback);
}

然后功能

public void GetSINGLEDepartment(int departmentid){
 RestAdapter restAdapter = new RestAdapter.Builder().setEndpoint(
                ROOT_URL).build();

        //create an instance of the VehicleAPIService.
        RetrofitInternetApi retrofitInternetApi = restAdapter
                .create(RetrofitInternetApi.class);
        retrofitInternetApi.getDepartmentByID(departmentid, new Callback<Response>() {
            @Override
            public void success(Response response, Response response2) {
                BufferedReader reader = null;

                //An string to store output from the server
                String output = "";

                try {
                    //Initializing buffered reader
                    reader = new BufferedReader(new InputStreamReader(response2.getBody().in()));

                    //Reading the output in the string
                    output = reader.readLine();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Log.d("Success",output);

                if(isJSONValid(output)==true){
                    //Saving to THE DATABASE
                    Log.d("FOUND JSON",output);



                }else{
                    //data found is not Json
                    Log.d("NO JSON FOUND",output);

                }

            }

            @Override
            public void failure(RetrofitError error) {
              Log.d("ERROR",error.getMessage());
            }
        });

后来随着我的发展,我将更新如何在拥有json的领域中使用它。