有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

简单登录活动的java错误422

Emulator outputEvent Log后勤活动。爪哇

package com.example2.sp.logandreg;

import 安卓.app.ProgressDialog;
import 安卓.content.Intent;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.util.Log;
import 安卓.view.View;
import 安卓.widget.Button;
import 安卓.widget.EditText;
import 安卓.widget.Toast;

import com.安卓.volley.AuthFailureError;
import com.安卓.volley.Request;
import com.安卓.volley.Response;
import com.安卓.volley.Response.ErrorListener;
import com.安卓.volley.VolleyError;
import com.安卓.volley.toolbox.StringRequest;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class LoginActivity extends AppCompatActivity {

private static final String TAG ="LoginActivity";
private static final String URL_FOR_LOGIN = 
"http://staging.giftintime.com/mobile/users/sign_in";
ProgressDialog progressDialog;

private EditText et_email, et_pw;
private Button btn_login;
private  Button btn_signup;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    //progress dialog
    progressDialog=new ProgressDialog(this);
    progressDialog.setCancelable(false);


    et_email=(EditText) findViewById(R.id.email);
    et_pw = (EditText) findViewById(R.id.pw);
    btn_login = (Button)findViewById(R.id.login);
    btn_signup = (Button) findViewById(R.id.signup);

    btn_login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

   loginUser(et_email.getText().toString(),et_pw.getText().toString());
        }
    });

    btn_signup.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(LoginActivity.this,Signup.class));
        }
    });
}


private void loginUser(final String email,final String password) {
    String cancel_req_tag = "login";   // Tag used to cancel the request
    progressDialog.setMessage("Logging u in...");
    showDialog();
    StringRequest strReq = new StringRequest(Request.Method.POST, 
URL_FOR_LOGIN, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            Log.d(TAG, "Register Response:" + response.toString());
            hideDialog();
            try {
                JSONObject jObj = new JSONObject(response);
                boolean error = jObj.getBoolean("error");

                if (!error) {
                    String user = 
 jObj.getJSONObject("user").getString("name");
                    //launch second activity

                    Intent intent = new Intent(LoginActivity.this, 
SecondActivity.class);
                    intent.putExtra("username", user);
                    startActivity(intent);
                    finish();
                } else {
                    String errorMsg = jObj.getString("error_msg");
                    Toast.makeText(getApplicationContext(), errorMsg, 
Toast.LENGTH_LONG).show();
                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Login error:" + error.getMessage());
            Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
            hideDialog();
        }
    }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap <String, String>();       // Posting params to login url
            params.put("email", email);
            params.put("password", password);
            return params;
        }
    };
   // Adding request to request queue
            AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(strReq,cancel_req_tag);
}

private void showDialog() {
    if(!progressDialog.isShowing())
        progressDialog.show();
}
private void hideDialog() {
    if(progressDialog.isShowing())
        progressDialog.dismiss();
  }
}

阿普辛格尔顿。JAVA 包com。例2。罗格安德烈

import 安卓.content.Context;

import com.安卓.volley.Request;
import com.安卓.volley.RequestQueue;
import com.安卓.volley.toolbox.Volley;

public class AppSingleton {

private static AppSingleton mAppSingletonInstance;
private RequestQueue mRequestQueue;
private static Context mContext;

private AppSingleton(Context context){
    mContext=context;
    mRequestQueue= getRequestQueue();
}

public static synchronized AppSingleton getInstance(Context context){
    if(mAppSingletonInstance==null){
        mAppSingletonInstance = new AppSingleton(context);
    }
    return mAppSingletonInstance;
}

public RequestQueue getRequestQueue() {
    if(mRequestQueue==null){
        // getApplicationContext() is key, it keeps you from leaking the
        // Activity or BroadcastReceiver if someone passes one in.
        mRequestQueue= 
Volley.newRequestQueue(mContext.getApplicationContext());
    }
    return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T>req,String tag){
    req.setTag(tag);
    getRequestQueue().add(req);
  }
}

梯度锉

apply plugin: 'com.安卓.application'

安卓 {
compileSdkVersion 26
defaultConfig {
    applicationId "com.example2.sp.logandreg"
    minSdkVersion 19
    targetSdkVersion 26
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner 
 "安卓.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-安卓.txt'), 
    'proguard-rules.pro'
    }
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.安卓.support:appcompat-v7:26.1.0'
implementation 'com.安卓.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
安卓TestImplementation 'com.安卓.support.test:runner:1.0.1'
compile 'com.安卓.volley:volley:1.0.0'
安卓TestImplementation 'com.安卓.support.test.espresso:espresso-
core:3.0.1'
}

这段代码包括使用API的“登录活动”的java文件,其中包括Gradle文件。代码没有连接到前面提到的“url”。我对安卓编码还不熟悉,无法理清它。谁能帮我一下吗

多谢各位


共 (1) 个答案

  1. # 1 楼答案

    当您使用电子邮件id和密码发出请求时,您会收到错误,因为其代码为422,所以volley会收到错误响应,所以您只需处理错误响应中的错误

     private void loginUser(final String email,final String password) {
            String cancel_req_tag = "login";   // Tag used to cancel the request
            progressDialog.setMessage("Logging u in...");
            showDialog();
            StringRequest strReq = new StringRequest(Request.Method.POST, 
        URL_FOR_LOGIN, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.d(TAG, "Register Response:" + response.toString());
                    hideDialog();
                    try {
                        JSONObject jObj = new JSONObject(response);
                        boolean error = jObj.getBoolean("error");
    
                        if (!error) {
                            String user = 
         jObj.getJSONObject("user").getString("name");
                            //launch second activity
    
                            Intent intent = new Intent(LoginActivity.this, 
        SecondActivity.class);
                            intent.putExtra("username", user);
                            startActivity(intent);
                            finish();
                        } else {
                            String errorMsg = jObj.getString("error_msg");
                            Toast.makeText(getApplicationContext(), errorMsg, 
        Toast.LENGTH_LONG).show();
                        }
    
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
    
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e(TAG, "Login error:" + error.getMessage());
                    Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_LONG).show();
                    hideDialog();
    // show user error message
    
          try {
                            if(error.networkResponse!=null) {
                                if (error.networkResponse.data != null) {
                                    String responseBody = new String(error.networkResponse.data, "utf-8");
                                    JSONObject exception = new JSONObject(responseBody);
                                    Toast.makeText(VerificationCodeActivity.this, exception.getString("message"), Toast.LENGTH_SHORT).show();
                                }
                            }
    
    
                        } catch ( JSONException e ) {
                            e.printStackTrace();
        //Handle a malformed json response
                        } catch (UnsupportedEncodingException e){
                            e.printStackTrace();
                        }
                }
            }) {
                @Override
                protected Map<String, String> getParams() {
                    Map<String, String> params = new HashMap <String, String>();       // Posting params to login url
                    params.put("email", email);
                    params.put("password", password);
                    return params;
                }
            };
           // Adding request to request queue
                    AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(strReq,cancel_req_tag);
        }
    
        private void showDialog() {
            if(!progressDialog.isShowing())
                progressDialog.show();
        }
        private void hideDialog() {
            if(progressDialog.isShowing())
                progressDialog.dismiss();
          }