안녕하세요 질문이 있어 글 남깁니다.
서버와 데이터를 주고 받는 코드는 이렇게 되어있고,
callSignUp.enqueue(object : Callback<UserResponse> {
override fun onResponse(call: Call<UserResponse>, response: Response<UserResponse>) {
if (response.isSuccessful && response.code() == ResponseCode.SUCCESS_POST) {
Log.d("JoinFragment: onResponse: Success:: ", "SUCCESS")
join = response.body()
Log.d("Join: MSG:: ", "${join?.signUp}")
finish()
}
}
override fun onFailure(call: Call<UserResponse>, t: Throwable) {
Log.e("JoinFragment: onResponse: Failure:: ", "실패 : $t")
}
})
데이터 클래스는 이렇게 되어 있고,
data class UserResponse(
@SerializedName("signUp")
var signUp: String = ""
)
POST는 이렇게 되어 있습니다.
@FormUrlEncoded
@POST("api/user/join")
fun signUp(
@Field("name") name: String,
@Field("phone") phone: String,
@Field("password") password: String,
@Field("auth") auth: String
): Call<UserResponse>
스프링부트에서 이런식으로 api가 구현되어 있고
@PostMapping("/api/user/join")
public String signUp(UserJoinRequestDto userJoinRequestDto) {
return "SUCCESS JOIN PHONE : " + userService.save(userJoinRequestDto);
}
코틀린에서 서버로 데이터 전송은 잘 되는 상황입니다..
하지만, 현재 return 값을 받고싶은데
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
오류가 뜨며, object이 필요하지만, string이 온다는 내용의 오류가 뜨는 것 같습니다.
retrofit2 사용예제를 보면 이런식으로 잘 구현되는 것 같은데, 어디가 문제인지를 모르겠어요
string으로 보내고 string으로 받겠다는데 왜 안되는 것일까요?
현재 개발 공부중이라 질문이 좀 엉성한 면이 있네요.. 잘못된 단어나 질문에 대해선 피드백 해주셔도 좋은 공부가 될 것 같습니다.
답변해주시면 감사하겠습니다!