Retrofit을 사용할 때 BaseURL은 "/" 로 끝이 나야 하는 걸로 아는데요. 아래처럼 바꾸어 보세요.
object RetrofitClient{
private val BASE_URL = "https://www.xphobia.net/" // 끝이 '/'로 끝나도록 변경
val instance: RetrofitService by lazy {
val retrofit = Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build()
retrofit.create(RetrofitService::class.java)
}
}
interface RetrofitService {
//private val Base_URL : String. ==> 중복이므로 삭제
//get() = "https://www.xphobia.net"
@POST("/reservation/ck_date2_no1.php")
fun postFirst(
@Body params: BeatPhobia_request
) : Call<BeatPhobia_response>
}
그리고 Retrofit의 response를 체크할 때,
if (response.code() == 200)
200일 것만 필터를 하셨는데, 대부분의 경우는 맞지만, 좀 더 안전하게 하려면 Http응답코드를 보면 200 - 299를 정상 응답이라고 볼 수도 있습니다. 그리고 200 인 것만 성공으로 보시려면, 아래와 같은 로직으로 처리가 되어야 하지 않을 까 생각합니다.
왜냐하면 현재는 response.code가 200이 아닌 경우에 대한 처리를 해주고 있지 않기 때문입니다.
if(response.isSuccessful && response.code() == 200){
val result: BeatPhobia_response? = response.body()
Log.d("YMC", "Response successed\n" + result.toString())
}else{
Log.d("YMC", "Response failed")
}
마지막으로, 코틀린을 사용하신다면 Coroutine을 사용하고 네트워크 작업을 하는 것이 자연스런 선택같아 보입니다. 랭귀지에서 제공하는 기능이니 별다른 라이브러리도 필요없고 콜백보다 성능이나 코드 면에서 더 나은 방법이라고 보입니다.
BaseURL을 고쳐서 되지 않는다면, Postman같은 툴로 먼저 테스트를 해보시고, 그래도 안된다면 구체적인 에러메세지를 올려보세요. 대부분은 서버에서 필요한 request 대로 처리를 하지 않아서 생기는 문제입니다.