Ich arbeite derzeit an einem Projekt, in dem ich Benutzernamen, Passwort und E-Mail eines Benutzers für die Registrierung des Benutzers auf meinem Server senden müssen. Ich habe den Befehl POST dafür verwendet und da ich 3 Werte für die Registrierung eines Benutzers senden muss, habe ich ContentValues für diesen Zweck verwendet. Hier ist mein Code:Post Anfrage für die Registrierung von Benutzerdaten auf dem Server von 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;
}
Hier ist meine getQuery Methode:
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();
}
Aber ich bin immer folgende Antwort durch:
Result: name=ABC&email=abc%40xyz.com&password=123
Result: 422
System.err: java.io.FileNotFoundException: http://docpanel.myworkdetails.com/api/auth/register
Wo 422 ist der Statuscode zurückgegeben von Response das bedeutet:
"errors": {
"email": [
"The email field is required."
],
"password": [
"The password field is required."
],
"name": [
"The password field is required."
]
},
"status_code": 422
Ich verstehe nicht, wie man Argumente mit der POST-Methode weitergibt, damit meine Anmeldeseite funktioniert. Und ich habe die richtige URL.
Ist dieser Server Fehler oder ich mache Fehler bei der Implementierung von POST?
Bitte Hilfe! Vielen Dank im Voraus.
Problem .. Und auch ich will es programmatisch arbeiten. – Swr7der