问题描述
我是 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 (将#修改为@)