서버가 요청을 인식하고 요청한 데이터 클라이언트를 다시 보내려는 경우 200을 보냅니다. 서버가 요청을 인식하지만 클라이언트가 요청한 데이터를 다시 보내지 않으면 422를 보내십시오. JSON API가 어떻게 작동하는지 정확하게 알려줍니다. 나는 안드로이드에 422, HttpURLConnection의 입력 스트림에 액세스하려고 예외가 발생 보낼 때, 불행하게도JSON API의 상태 코드로 작업
respond_to do |format|
if @user.persisted?
format.json do
render json: { id: @user.id }, status: 200
end
else
format.json do
render json: { error: @user.errors.full_messages }, status: 422
end
end
end
: 모델을 저장할 때, 나는 모델 유효성 검사 오류를 포함 할 때, 나는 422을 보내 200을 보내
W/System.err: java.io.FileNotFoundException: http://10.0.2.2:3001/users/auth/facebook/callback.json
이제 JSON API에서 422를 200으로 변경하면 예외가 발생하지 않으며 데이터를 구문 분석 할 수 있습니다.
url = new URL(OMNI_AUTH_CALLBACK);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(15000);
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
OutputStream os = urlConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getQuery(params[0]));
writer.flush();
writer.close();
os.close();
int status = urlConnection.getResponseCode();
InputStream in = urlConnection.getInputStream();
InputStreamReader reader = new InputStreamReader(in);
int data = reader.read();
while(data != -1) {
char current = (char) data;
result += current;
data = reader.read();
}
데이터를 저장하는 동안 문제가 발생했기 때문에 응답이 200이 아니어야합니다. Android 개발자는 무엇을 할 수 있습니까?
??? 422 에러가 발생하고 200 에러가 발생하지 않고 응답이 200이 아니어야한다고 말하고 있습니까? 422 또는 200과 오류가 있거나 오류가 없으면 무엇이 필요합니까? – user7568042
@ user7568042 나는 이미 내 질문에 설명했다 : 모델이 저장되지 않을 때, 422를 다시 보내고 싶다. 그러나 422를 안드로이드에 보내면 예외가 발생하고 JSON 오류 메시지를 처리 할 수 없다. 422 상태 코드 응답. – Donato