Android Retrofit Post Issue

时间:2016-09-07 21:52:51

标签: android rest retrofit

我以前使用volley实现了以下发布请求,但现在我想用它来进行改造。 所以我的休息网络服务如下 www.blahblahblah.com/webservice.svc /

我有一个在Web服务中调用的函数(Person),它接受以下jsonobject

JSONObject jsonObject = new JSONObject();
JSONObject searchCriteria = new JSONObject();
jsonObject.put("FullName", "frank jones");
jsonObject.put("DOB", "06-04-1978");
jsonObject.put("Age", "28");
jsonObject.put("Reason", "Search");
searchCriteria.put("searchCriteria", jsonObject);

所以在凌空抽射中我打电话给www.blahblahblah.com/webservice.svc/Person 并传递上面的jsonobject。 完美运作

因此对于Retrofit我使用了相同的逻辑,创建我的jsonobject并在请求中传递它 所以我使用相同的网址www.blahblahblah.com/webservice.svc /

创建我的帖子

@POST("Person")
Call<PersonResponseData> getPersonAccess(@Body Object body);

然后我的代码获得响应

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

    RetrofitService service = retrofit.create(RetrofitService.class);

    Call<PersonResponseData> personResponseDataCall =        service.getPersonAccess(searchCriteria);

    personResponseDataCall.enqueue(new Callback<PersonResponseData>() {
        @Override
        public void onResponse(Response<PersonResponseData> response,    Retrofit retrofit) {
            int statuscode = response.code();
            PersonResponseData personResponseData = response.body();
        }

        @Override
        public void onFailure(Throwable t) {

        }
    });

我刚收到404错误,任何想法。 正如我所说,这在排球中完美无缺,但我在改造方面做错了。

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

您可以查看此问题link以下是retrofit 2POST request

一起使用的说明

答案 1 :(得分:0)

这只是猜测,但请尝试以下方法:

1)在呼叫声明中指定它,而不是Call getPersonAccess,而是Call<PersonResponseData> getPersonAccess;
2)使用POJO代替JSON对象并将其用作正文,而不是将Object传递给getPersonAccess调用。