Java JsonobjectRequest截击库不工作
我对AnoidDroid开发和android测验应用程序还不熟悉。我在nodejs中制作了一个api,希望通过使用volley jsonobjectrequest发出http json post请求。这是我写的代码:Java JsonobjectRequest截击库不工作,java,android,json,android-volley,jsonobjectrequest,Java,Android,Json,Android Volley,Jsonobjectrequest,我对AnoidDroid开发和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.Bund
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;
};
package com.gourav.exam\u app\u android;
导入androidx.appcompat.app.appcompat活动;
导入android.content.Intent;
导入android.os.Bundle;
导入android.text.TextUtils;
导入android.util.Log;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ProgressBar;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.android.volley.AuthFailureError;
导入com.android.volley.DefaultRetryPolicy;
导入com.android.volley.NetworkError;
导入com.android.volley.NetworkResponse;
导入com.android.volley.Request;
导入com.android.volley.RequestQueue;
导入com.android.volley.Response;
导入com.android.volley.RetryPolicy;
导入com.android.volley.ServerError;
导入com.android.volley.VolleyError;
导入com.android.volley.toolbox.HttpHeaderParser;
导入com.android.volley.toolbox.JsonObjectRequest;
导入com.android.volley.toolbox.volley;
导入org.json.JSONException;
导入org.json.JSONObject;
导入java.io.UnsupportedEncodingException;
导入java.util.HashMap;
导入java.util.Map;
公共类注册表2扩展了AppCompatActivity{
编辑文本电子邮件;
请求队列请求队列;
UtilService UtilService=新的UtilService();
编辑文本用户名;
编辑文本密码;
按钮寄存器;
TextView已注册;
钢筋加载;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register2);
Password=findviewbyd(R.id.Password\u寄存器);
用户名=findViewById(R.id.UserName\u寄存器);
Email=findviewbyd(R.id.Email\u注册表);
寄存器=findViewById(R.id.Register);
已注册=findViewById(R.id.textView);
加载=findviewbyd(R.id.loading\u寄存器);
//Bundle b1=getIntent().getExtras();
//字符串User_type=b1.getString(“User_type”);
Bundle b1=getIntent().getExtras();
字符串User_type=b1.getString(“User_type”);
Toast.makeText(register2.this,User_type,Toast.LENGTH_SHORT).show();
Intent Registered\u to\u login=新Intent(register2.this,login.class);
Register.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
加载.setVisibility(视图.VISIBLE);
hideKeyboard(视图、注册表2.this);
if(isvalid(视图)){
注册服务器(视图);
}
}
专用无效注册表服务器(视图){
字符串username=username.getText().toString();
字符串密码=password.getText().toString();
字符串email=email.getText().toString();
Toast.makeText(register2.this,“打开主页”,Toast.LENGTH_SHORT.show();
HashMap parms=新的HashMap();
参数put(“用户名”,用户名);
parms.put(“电子邮件”,电子邮件);
密码输入(“密码”,密码);
参数put(“用户类型”,用户类型);
字符串apiKey=”https://gounikquizapp.herokuapp.com/api/auth/register";
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(Request.Method.POST,
apiKey,新的JSONObject(parms),新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
if(response.getBoolean(“success”)==true){
String token=response.getString(“token”);
Toast.makeText(register2.this,Toast.LENGTH_SHORT.show();
Intent register2\u mainActivityy=新的Intent(register2.this,MainActivity.class);
启动活动(登记2_main activity);
}
loading.setVisibility(View.GONE);
}捕获(JSONException e){
e、 printStackTrace();
loading.setVisibility(View.GONE);
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
NetworkResponse=错误。NetworkResponse;
if(error instanceof ServerError&&response!=null){
试一试{
String res=新字符串(response.data,HttpHeaderParser.parseCharset(response.headers,“utf-8”);
JSONObject obj=新的JSONObject(res);
Toast.makeText(register2.this,obj.getString(“msg”),Toast.LENGTH_SHORT.show();
loading.setVisibility(View.GONE);
}捕获(JSONException |不支持编码异常je){
je.printStackTrace();
loading.setVisibility(View.GONE);
}
}
}
}) {
@凌驾
公共映射getHeaders()引发AuthFailureError{
HashMap headers=新的HashMap();
headers.put(“内容类型”、“应用程序/json”);
返回参数;
}
};
//设置重试策略
int socketTime=3000;
RetryPolicy=new Defa