2014-10-18 4 views
1

스프링 부트 서비스에 대한 게시물 요청에 대해 Retrofit을 사용하고 있지만 항상 실패 콜백 메소드라고합니다.스프링 부트 서비스에 대한 POST 요청을 개정하십시오.

@RestController 
public class ServController { 

    @Autowired 
    private UserRepository userRepository; 

    @RequestMapping(value = "/user", method = RequestMethod.POST) 
    public Boolean signUpUser(@RequestBody User user) 
    { 

     return true; 
    } 
} 

내 클라이언트 인터페이스 :

public interface ChainApi { 

    public static final String USER_PATH = "/user"; 

    @POST(USER_PATH) 
    public void signUpUser(@Body User user, Callback<Boolean> callback); 
} 

비동기 POST 요청이 :

User user = new User(); 
user.setId(12); 
user.setName(nameEtx.getText().toString()); 
user.setEmail(emailEtx.getText().toString()); 
user.setPassword(passwordEtx.getText().toString()); 

RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint(Constant.URL_LOCALHOST) 
      .build(); 

ChainApi service = restAdapter.create(ChainApi.class); 

service.signUpUser(user, new Callback<Boolean>() { 
    @Override 
    public void success(Boolean aBoolean, Response response) { 

     Log.i(TAG, "Succesfull"); 

    @Override 
    public void failure(RetrofitError error) { 

     Log.i(TAG, "Error " + error.getMessage()); // 400 Bad Request 

    } 
}); 

이 내 사용자입니다

봄 부팅 서비스 (컨트롤러) : 이것은 내 간단한 코드입니다 수업 (POJO) :

@JsonIgnoreProperties(value = { "additionalProperties"}) 
public class User { 

    @JsonProperty("id") 
    private Integer id; 
    @JsonProperty("name") 
    private String name; 
    @JsonProperty("password") 
    private String password; 
    @JsonProperty("email") 
    private String email; 
    @JsonIgnore 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

    // methods 
} 

참고 : 저는 Android로 개발 중이며 우편 배달부에서 수동 POST 요청을 할 때 200 OK를 받았습니다. 또한 나는 로그 캣 메시지를 얻을 : 400 잘못된 요청

+0

포스트는 –

+0

이 마지막 부분 – kelvincer

+0

에 내 게시물을 업데이트지고있어 오류가 귀하의 요청에서 무엇인가, 그것은 실종 아마도 뭔가를 좋아하지 않는 서버처럼 소리. 서버의 로그를 살펴보면 올바른 방향으로 사용자를 안내 할 것입니다. –

답변

2

개조는 기본 Converter으로 GSON를 사용합니다. @JsonIgnoreProperties은 Jackson의 주석입니다. RestAdapter를 보면 Jackson Converter를 지정하지 않는 것 같습니다.

Square는 JasksonConverter를 구현했으며 종속성을 포함하여 사용합니다.

compile 'com.squareup.retrofit:converter-jackson:X.X.X' 

Retrofit 버전과 일치하는 버전을 사용하십시오.

그런 다음

JacksonConverter converter = JacksonConverter(new ObjectMapper()); 
RestAdapter restAdapter = new RestAdapter.Builder() 
      .setEndpoint(Constant.URL_LOCALHOST) 
      .setConverter(converter) 
      .build(); 
+0

Miguel 솔루션이 작동하지 않습니다. 다음과 같이 변경해야합니다. 'com.squareup.retrofit : converter-jackson : 1.7.0'및 JacksonConverter converter = new JacksonConverter (new ObjectMapper()); – kelvincer

+0

당신의 변경 사항에 대한 답변. 실수에 대한 사과. 잭슨이 기본 JSON 도구 인 경우 Retrofit이 JSON을 적절하게 직렬화/비 직렬화하도록하려면 JasksonConverter를 사용해야합니다. 불행히도 나는 famili 잭슨을 구성/사용하는 방법에 대해 알아보십시오. –

+0

OK Miguel. 감사. – kelvincer

관련 문제