【问题标题】:Not able to make @Post request using retrofit2 in android无法在 android 中使用改造来发出 @Post 请求
【发布时间】:2020-05-28 21:15:40
【问题描述】:

我正在学习如何在 android 中使用改造,但每当我尝试从 Internet 检索数据时,我的应用程序不会返回任何内容我的响应没有成功,我不知道如何修复当前的错误尝试使用 https://jsonplaceholder.typicode.com 从该 URL 发布和检索数据。我无法弄清楚是什么原因造成的。

主活动

 private void createpost() {

        Post post2=new Post(1,"This is Title","10");

        Call<Post> postCall= mWebService.createPost(post2);

        postCall.enqueue(new Callback<Post>() {
            @Override
            public void onResponse(Call<Post> call, Response<Post> response) {

                if (response.isSuccessful())
                {
                    Log.d(TAG,"response.isSuccessful()");
                    mLog.setText(String.valueOf(response.code()));
                    showPost(response.body());

                }
            }

            @Override
            public void onFailure(Call<Post> call, Throwable t) {

            }
        });


    }

界面

public interface MyWebService {

 String BASE_URL="https://jsonplaceholder.typicode.com/";

Retrofit retrofit=new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();


    @POST("posts")
    Call<Post> createPost(@Body Post post);

}

【问题讨论】:

    标签: java android retrofit2


    【解决方案1】:

    由于未知原因https://jsonplaceholder.typicode.com 正在抛出套接字超时异常,同时您可以查看另一个具有类似功能的网站https://reqres.in/ 这是帖子所附的示例代码

    final HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
            httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
            final OkHttpClient okHttpClient = new OkHttpClient.Builder()
                    .addInterceptor(httpLoggingInterceptor)
                    .build();
            final String host = "https://reqres.in/";
    
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(HttpUrl.parse(host))
                    .client(okHttpClient)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
    
            ReqResApi api = retrofit.create(ReqResApi.class);
    
            api.createUser(new User("silentsudo", "dev"))
                    .enqueue(new Callback<User>() {
                        @Override
                        public void onResponse(Call<User> call, Response<User> response) {
                            System.out.println("Resp Success full: " + response.body().toString());
                        }
    
                        @Override
                        public void onFailure(Call<User> call, Throwable throwable) {
                            System.err.println("Error calling api");
                            throwable.printStackTrace();
                        }
                    });
    
    

    API

     interface ReqResApi {
            @POST("api/user")
            Call<User> createUser(@Body User post);
        }
    

    POJO

    class User {
            private String name;
            private String job;
    
            public User(String name, String job) {
                this.name = name;
                this.job = job;
            }
    
            @Override
            public String toString() {
                return "User{" +
                        "name='" + name + '\'' +
                        ", job='" + job + '\'' +
                        '}';
            }
        }
    
    

    【讨论】:

    • 你的工作正常,但我不知道我的网站有什么问题@Get 请求实际上运行成功。
    猜你喜欢
    • 2021-05-19
    • 2018-04-25
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多