JsonobjectRequest 排球库不起作用

问题描述

我是 anoid droid 开发的新手,并为 android 制作了一个测验应用程序。我在 nodejs 中制作了一个 api,并想使用 volley jsonobjectrequest 制作 http json post 请求。这是我写的代码

package com.gourav.exam_app_android;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.DefaultRetryPolicy;
import com.android.volley.NetworkError;
import com.android.volley.NetworkResponse;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.RetryPolicy;
import com.android.volley.ServerError;
import com.android.volley.VolleyError;
import com.android.volley.toolBox.HttpHeaderParser;
import com.android.volley.toolBox.JsonObjectRequest;
import com.android.volley.toolBox.Volley;

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

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

public class register2 extends AppCompatActivity {
EditText Email;
RequestQueue requestQueue ;
    UtilService utilservice = new UtilService();
EditText UserName;
EditText Password;
Button Register;
TextView Already_registered;
ProgressBar loading;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register2);
        Password = findViewById(R.id.password_register);
        UserName = findViewById(R.id.username_register);
        Email = findViewById(R.id.email_register);
        Register = findViewById(R.id.register);
        Already_registered = findViewById(R.id.textView);
        loading = findViewById(R.id.loading_register);
//        Bundle b1 = getIntent().getExtras();
//        String User_type =  b1.getString("User_type");
        Bundle b1 = getIntent().getExtras();
        String User_type = b1.getString("User_type");
        Toast.makeText(register2.this,User_type,Toast.LENGTH_SHORT).show();
        Intent Registered_to_login = new Intent(register2.this,login.class);


        Register.setonClickListener(new View.OnClickListener() {


                @Override
                public void onClick(View view) {
                    loading.setVisibility(View.VISIBLE);
                    utilservice.hideKeyboard(view,register2.this);
                    if(isvalid(view)){
                        registerUser(view);
                    }
                 }
            private void registerUser (View view){
                String username = UserName.getText().toString();
                String password = Password.getText().toString();
                String email = Email.getText().toString();
                Toast.makeText(register2.this,"opening Home Page",Toast.LENGTH_SHORT).show();
                HashMap<String,String> parms = new HashMap<String,String>();
                parms.put("userName",username);
                parms.put("email",email );
                parms.put("password",password);
                parms.put("Usertype",User_type);



                String apiKey = "https://gounikquizapp.herokuapp.com/api/auth/register";


                JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,apiKey,new JSONObject(parms),new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            if (response.getBoolean("success")==true) {
                                String token = response.getString("token");

                                Toast.makeText(register2.this,token,Toast.LENGTH_SHORT).show();
                                Intent register2_MainActivtiy = new Intent(register2.this,MainActivity.class);
                                startActivity(register2_MainActivtiy);
                            }
                            loading.setVisibility(View.GONE);
                        } catch (JSONException e) {
                            e.printstacktrace();
                            loading.setVisibility(View.GONE);
                        }
                    }
                },new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                        NetworkResponse response = error.networkResponse;
                        if (error instanceof ServerError && response != null) {
                            try {
                                String res = new String(response.data,HttpHeaderParser.parseCharset(response.headers,"utf-8"));

                                JSONObject obj = new JSONObject(res);
                                Toast.makeText(register2.this,obj.getString("msg"),Toast.LENGTH_SHORT).show();
                                loading.setVisibility(View.GONE);
                            } catch (JSONException | UnsupportedEncodingException je) {
                                je.printstacktrace();
                                loading.setVisibility(View.GONE);
                            }
                        }
                    }
                }) {
                    @Override
                    public Map<String,String> getHeaders() throws AuthFailureError {
                        HashMap<String,String> headers = new HashMap<>();
                        headers.put("Content-Type","application/json");
                        return parms;
                    }
                };

                // set retry policy
                int socketTime = 3000;
                RetryPolicy policy = new DefaultRetryPolicy(socketTime,DefaultRetryPolicy.DEFAULT_MAX_RETRIES,DefaultRetryPolicy.DEFAULT_BACKOFF_MULT);
                jsonObjectRequest.setRetryPolicy(policy);

                // request add
                 requestQueue = Volley.newRequestQueue(register2.this);
                requestQueue.add(jsonObjectRequest);
            }
                                    });
        Already_registered.setonClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(Registered_to_login);
            }
        });


     }
    public boolean isvalid(View view){
        boolean isvalid;


        if(TextUtils.isEmpty(UserName.getText())){
            utilservice.showSnackBar(view,"pls enter username");
            isvalid = false;
            if(TextUtils.isEmpty(Email.getText())){
                utilservice.showSnackBar(view,"pls enter email");
                isvalid = false;
                if(TextUtils.isEmpty(Password.getText())){
                    utilservice.showSnackBar(view,"pls enter password");
                    isvalid = false;
                }
                else{
                    isvalid = true;
                }
            }
            else{
                isvalid = true;
            }
        }
        else{
            isvalid = true;
        }


            return isvalid;
    };

代码成功运行,但未在我的目标 android 中显示任何结果。请为此找到解决方案。如果这是一个愚蠢的问题,我很抱歉。 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)