로그인 페이지를 만들면 사용자 이름과 암호 유효성 검사를 확인하는 편안한 API가 호출됩니다. 상태 코드가 맞으면 api는 사용자 이름 ID를 반환합니다. ,이 ID를 저장에안드로이드에서 POST 메서드를 호출 할 때 json 응답을 반환합니다.
signin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
RequestQueue requestQueue = Volley.newRequestQueue(SignIn.this);
String URL = "http://localhost/WebApplication7/api/login";
JSONObject jsonBody = new JSONObject();
// jsonBody.put("tblRegisteredUsers_nickName", username.getText().toString().trim());
jsonBody.put("tblRegisteredUsers_UserName", username.getText().toString().trim());
jsonBody.put("tblRegisteredUsers_Password", password.getText().toString().trim());
final String requestBody = jsonBody.toString();
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if (response.trim().equals("2013")) {
//login authenticated. Start the next activity of your app
Toast.makeText(SignIn.this, "Logged In", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
} else {
//login failed. prompt to re-enter the credentials
Toast.makeText(SignIn.this, "Failed to log In", Toast.LENGTH_SHORT).show();
Log.i("VOLLEY", response);
Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("VOLLEY", error.toString());
}
}) {
@Override
public String getBodyContentType() {
return "application/json; charset=utf-8";
}
@Override
public byte[] getBody() throws AuthFailureError {
try {
return requestBody == null ? null : requestBody.getBytes("utf-8");
} catch (UnsupportedEncodingException uee) {
VolleyLog.wtf("Unsupported Encoding while trying to get the bytes of %s using %s", requestBody, "utf-8");
return null;
}
}
@Override
protected Response<String> parseNetworkResponse(NetworkResponse response) {
String responseString = "";
if (response != null) {
responseString = String.valueOf(response.statusCode);
// Toast.makeText (getApplicationContext(), responseString, Toast.LENGTH_SHORT) .show() 나중에 사용할 수 // response.headers와 같은 자세한 정보를 얻을 수 있습니다 } return Response.success (responseString, HttpHeaderParser.parseCacheHeaders (response)); } };
requestQueue.add(stringRequest);
} catch (JSONException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
});
는 "2013"(사용자 이름의 ID) 은 내가 어떻게이 ID를 저장할 수 있습니다이 내 웹 API 코드 (VB에서 asp.net)
Public Function login(<FromBody> ByVal users As tblRegisteredUser) As IHttpActionResult
Try
Using entities As IAPD_DBEntities = New IAPD_DBEntities()
Dim username = entities.tblRegisteredUsers.FirstOrDefault(Function(e) e.tblRegisteredUsers_UserName.Equals(users.tblRegisteredUsers_UserName))
Dim password = entities.tblRegisteredUsers.FirstOrDefault(Function(e) e.tblRegisteredUsers_Password.Equals(users.tblRegisteredUsers_Password))
If username Is Nothing OrElse password Is Nothing Then
Dim message = Request.CreateResponse(HttpStatusCode.BadRequest, "username or password is incorrect")
Return message
Else
Dim response = Request.CreateResponse(HttpStatusCode.OK)
response.Content = New StringContent(username.tblRegisteredUsers_UserPKID.ToString.Trim.ToString, Encoding.UTF8, "application/json")
'Dim message = Request.CreateResponse(HttpStatusCode.Created, username.tblRegisteredUsers_UserPKID.ToString.Trim)
'message.Headers.Location = New Uri(Request.RequestUri, "Loged In successfully")
Return Ok(username.tblRegisteredUsers_UserPKID.ToString.Trim.ToString)
End If
End Using
Catch e As Exception
Return BadRequest(e.ToString)
End Try
End Function
과 API의 응답한다 내 문제는 코드 200으로 응답을 얻을 수 없다는 것입니다. 사용자 이름이 ID가 아닌 경우 도움을 받으려면
내 질문에 그것을 저장하는 방법입니다, 내 응답 문자열은 사용자 이름이 아닌 012를 반환합니다 –
또한 서버 코드를 게시하십시오. – Cristian
https://stackoverflow.com/users/7048554/cristian 글 게시 –