How to make a POST request using retrofit 2?

后端 未结 2 831
离开以前
离开以前 2021-01-17 11:41

I was only able to run the hello world example (GithubService) from the docs.

The problem is when I run my code, I get the following Error, inside of onFail

相关标签:
2条回答
  • 2021-01-17 12:18

    If you don't want JSON encoded params use this:

    @FormUrlEncoded
    @POST("/")
    Call<ApiResponse> request(@Field("api_key") String apiKey, @Field("app_id") String appId);
    
    0 讨论(0)
  • 2021-01-17 12:30

    You should be aware of how you want to encode the post params. Important is also the @Header annotation in the following. It is used to define the used content type in the HTTP header.

    @Headers("Content-type: application/json")
    @POST("user/savetext")
        public Call<Id> changeShortText(@Body MyObjectToSend text);
    

    You have to encode your post params somehow. To use JSON for transmission you should add .addConverterFactory(GsonConverterFactory.create(gson)) into your Retrofit declaration.

    Retrofit restAdapter = new Retrofit.Builder()
                    .baseUrl(RestConstants.BASE_URL)
                    .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .client(httpClient)
                    .build();
    

    Another source of your problem could be that the JSON, that's coming from the rest backend seems to be not correct. You should check the json syntax with a validator, e.g. http://jsonlint.com/.

    0 讨论(0)
提交回复
热议问题