현재 내 서버에 사용자를 등록하기 위해 사용자의 사용자 이름, 암호 및 전자 메일을 보내야하는 프로젝트를 진행 중입니다. 나는 그것을 위해 POST 명령을 사용했고 사용자를 등록하기 위해 3 개의 값을 전송해야하므로 그 용도로 ContentValues를 사용했습니다. 여기 HttpUrlConnection에 의해 서버에 사용자 데이터 등록 요청 게시
@Override
protected String doInBackground(String... params) {
try {
url = new URL(params[0]);
httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setDoInput(true);
httpURLConnection.setDoOutput(true);
httpURLConnection.setRequestMethod("POST");
ContentValues values = new ContentValues();
values.put("email", "[email protected]");
values.put("password", "123");
values.put("name","ABC");
outputStream = httpURLConnection.getOutputStream();
bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
bufferedWriter.write(getQuery(values));
bufferedWriter.flush();
statusCode = httpURLConnection.getResponseCode();
Log.i("Result",String.valueOf(statusCode));
inputStream = new BufferedInputStream(httpURLConnection.getInputStream());
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
int data = inputStreamReader.read();
while (data != -1) {
char current = (char) data;
result += current;
data = inputStreamReader.read();
}
JSONObject jsonObject = new JSONObject(result);
Log.i("Result",String.valueOf(jsonObject));
if (statusCode == 200) {
inputStream = new BufferedInputStream(httpURLConnection.getInputStream());
Log.i("Result","Correct Data Returned");
JSONObject jsonObject = new JSONObject(response);
return true;
} else {
Log.i("Result","Data not returned");
return false;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
내 getQuery 방법입니다 : 여기 내 코드입니다
private String getQuery(ContentValues values) throws UnsupportedEncodingException
{
StringBuilder result = new StringBuilder();
boolean first = true;
for (Map.Entry<String, Object> entry : values.valueSet())
{
if (first)
first = false;
else
result.append("&");
result.append(URLEncoder.encode(entry.getKey(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(String.valueOf(entry.getValue()), "UTF-8"));
}
Log.i("Result",result.toString());
return result.toString();
}
그러나 나는 그것에 의해 응답 다음 점점 오전 :
Result: name=ABC&email=abc%40xyz.com&password=123
Result: 422
System.err: java.io.FileNotFoundException: http://docpanel.myworkdetails.com/api/auth/register
422 응답 코드에 의해 반환 된 상태 코드를 의미 :
"errors": {
"email": [
"The email field is required."
],
"password": [
"The password field is required."
],
"name": [
"The password field is required."
]
},
"status_code": 422
POST 메서드로 arguements를 전달하여 내 가입 페이지가 작동하도록하는 방법을 얻지 못하고 있습니다. 올바른 URL을 가지고 있습니다.
이 서버 측 오류입니까, 아니면 POST 구현시 실수입니까?
제발 도와주세요! 미리 감사드립니다.
작동하지 않습니다. 또한 프로그래밍 방식으로 작동하도록하고 싶습니다. – Swr7der