我有一个疑问让我感到困惑,我正在使用 android/nodejs/postgreSQL, 我能够向服务器发送 http 请求并存储信息。
但我这样做时没有考虑好的做法,即让模型与用户相关联。
所以基本上我从注册表单中获取数据,使用表单信息执行简单的 params.put 并发送带有键/值信息的数据。
但现在我想要一个用户模型并通过 params.put 传递用户模型并做同样的事情。
这是一种好的做法吗?还是我应该忘记 User 模型并做这样的事情?
这是我目前正在做的事情:
public void register(View view) {
//get form data
final String username = usernameTxt.getText().toString();
String password = passwordTxt.getText().toString();
String email = emailTxt.getText().toString();
Log.d("email",String.valueOf(isValidEmail(email)));
if (!isValidEmail(email)) {
emailTxt.setError("Invalid Email");
}
//inicialize a map with pair key value
final Map<String, String> params = new HashMap<String, String>();
// Add form fields to the map
params.put("username", username);
params.put("email", email);
params.put("password", password);
/**
* Efetua um pedido ao servidor
*
* @param URl url do servidor a aceder
* @param JSONObject objeto json a ser retornado através do access point
*
*/
JsonObjectRequest request = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//TODO verificar o status code da resposta apenas deverá registar login caso seja 200
//verifica
Log.d("response",response.toString());
Intent i = new Intent(Register.this,Login.class);
i.putExtra("username",username);
startActivity(i);
finish();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
String body;
//get response body and parse with appropriate encoding
if(error.networkResponse.data!=null) {
String statusCode = String.valueOf(error.networkResponse.statusCode);
try {
body = new String(error.networkResponse.data,"UTF-8");
JSONObject jsonObj = new JSONObject(body);
Log.d("body",String.valueOf(jsonObj.get("message")));
showToast(String.valueOf(jsonObj.get("message")));
} catch (UnsupportedEncodingException e) {
showToast("You need to connect to the internet!");
} catch (JSONException e) {
Log.d("json:","problems decoding jsonObj");
}
}
//do stuff with the body...
}
});
request.setRetryPolicy(new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
queue.add(request);
}
最佳答案
希望对您有所帮助,尝试在您的应用程序中实现
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static final String REGISTER_URL = "http://foo.com/UserRegistration/volleyRegister.php";
public static final String KEY_USERNAME = "username";
public static final String KEY_PASSWORD = "password";
public static final String KEY_EMAIL = "email";
private EditText editTextUsername;
private EditText editTextEmail;
private EditText editTextPassword;
private Button buttonRegister;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextUsername = (EditText) findViewById(R.id.editTextUsername);
editTextPassword = (EditText) findViewById(R.id.editTextPassword);
editTextEmail= (EditText) findViewById(R.id.editTextEmail);
buttonRegister = (Button) findViewById(R.id.buttonRegister);
buttonRegister.setOnClickListener(this);
}
private void registerUser(){
final String username = editTextUsername.getText().toString().trim();
final String password = editTextPassword.getText().toString().trim();
final String email = editTextEmail.getText().toString().trim();
StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Toast.makeText(MainActivity.this,response,Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<String, String>();
params.put(KEY_USERNAME,username);
params.put(KEY_PASSWORD,password);
params.put(KEY_EMAIL, email);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
@Override
public void onClick(View v) {
if(v == buttonRegister){
registerUser();
}
}
}
关于java - 用截击发送对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068202/