것은 내가 표현하고 개조 1.9을 사용하여 안드로이드 네이티브 앱 사용 Node.js를 서버에서 일하고 있어요. true/false 답변 만 클라이언트에 반환하는 로그인 API의 경우 JSON을 계속 사용해야합니까?서버가 항상 http 응답으로 JSON 객체를 보내야합니까?
if(isLegal) {
res.sendStatus(200);
dbConnector.updateUser(token);
}
else{
console.log('Token is not legal');
res.sendStatus(403);
}
그러나 개조 프레임 워크는 제가와 JSON 객체를 전송해야 생각하게 JSON에 대한 응답을 변환하려고 : 제가보기에는
는 서버는 상태 코드 응답을 보낼 수있다 대답은 이상하지만.
내 개조 위해 RESTClient :public class RestClient {
private static final String URL = SessionDetails.getInstance().serverAddress;
private retrofit.RestAdapter restAdapter;
private ServerAPI serverAPI;
public RestClient() {
restAdapter = new retrofit.RestAdapter.Builder()
.setEndpoint(URL)
.setLogLevel(retrofit.RestAdapter.LogLevel.FULL)
.build();
serverAPI = restAdapter.create(ServerAPI.class);
}
public ServerAPI getService() {
return serverAPI;
}
}
그리고 사용 :
restClient.getService().login(token.getToken(), token.getUserId(), new Callback<Void>() {
@Override
public void success(Void aVoid, Response response) {
Log.d("Chooser", "Successful login on server.");
}
@Override
public void failure(RetrofitError error) {
error.printStackTrace();
Log.d("Chooser", "Login failed on server.");
}
});
는 다음과 같은 오류와 함께 결과를 그대로 사용 :
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING
이 있습니다 많은 주제 그러나이 문제에 대해서는 올바른 (또는 더 나은) 사용 방법에 대한 확실한 답이 없습니다.
이러한 경우 가장 좋은 구현에 대한 어떤 아이디어? 당신의 HTTP 응답에 빈 몸을 보내기
개조는 JSON 라이브러리로 GSON을 사용하며 서버로부터 수신 된 모든 개체를 구문 분석을 시도합니다. – nurgasemetey
그건 확실합니다. 하지만 JSON이 아닌 응답의 경우에는 예외가 발생합니다. –
이 시나리오에 대해 간단한 클래스를 만들 수 있습니다. 어쩌면 앞으로이 로그인 프로세스가 확장 될 것입니다. Bobcat100 @ – nurgasemetey