Cuento con una API REST de una base de datos de usuarios hecha en NodeJS, la dirección para usar el método GET es http://localhost:3000/users/
el método DELETE y PUT reciben un parámetro que va concatenado en la misma dirección, http://localhost:3000/users/2
donde lo último es el id del usuario que deseo eliminar o editar.
Estoy desarrollando la aplicación en Android usando HttpUrlConnection y Asynctask, pero se me dificulta en esa parte, no logro enviar el parámetro en la url.
UsuarioModel.java
package muse.pe.com.s13s01pedroso.model;public class UsuarioModel {private int id;private String username;private String email;private String password;private String create;private String updated;public UsuarioModel() {}public UsuarioModel(int id) { this.id = id;}public UsuarioModel(int id, String username, String email, String password, String create, String updated) { this.id = id; this.username = username; this.email = email; this.password = password; this.create = create; this.updated = updated;}public int getId() { return id;}public void setId(int id) { this.id = id;}public String getUsername() { return username;}public void setUsername(String username) { this.username = username;}public String getEmail() { return email;}public void setEmail(String email) { this.email = email;}public String getPassword() { return password;}public void setPassword(String password) { this.password = password;}public String getCreate() { return create;}public void setCreate(String create) { this.create = create;}public String getUpdated() { return updated;}public void setUpdated(String updated) { this.updated = updated;}}
UsuarioController.java
package muse.pe.com.s13s01pedroso.controler;import org.json.JSONObject;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.HttpURLConnection;import java.net.URL;import muse.pe.com.s13s01pedroso.model.UsuarioModel;public class UsuarioController {static final String urlWS = "http://192.168.1.34:3000/users/";//POSTpublic JSONObject post(UsuarioModel nuevo){ JSONObject jsonResult= new JSONObject(); try { URL obj = new URL(urlWS); HttpURLConnection conn = (HttpURLConnection) obj.openConnection(); conn.setRequestMethod("POST"); //type: POST, PUT, DELETE conn.setDoOutput(true); conn.setRequestProperty("Accept", "application/json"); conn.setUseCaches(false); conn.setRequestProperty("Accept-Encoding", "gzip"); conn.setRequestProperty("Content-Type", "application/json"); OutputStreamWriter osw = new OutputStreamWriter(conn.getOutputStream(),"UTF-8"); JSONObject uu = new JSONObject(); uu.put("username", nuevo.getUsername()); uu.put("password", nuevo.getPassword()); uu.put("email", nuevo.getEmail()); osw.write(uu.toString()); // CONVERT CLASS A JSONOBJECT osw.flush(); osw.close(); //TODO - RESULTADO BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream(), "UTF-8")); String inputLine; StringBuffer html = new StringBuffer(); while ((inputLine = in.readLine()) != null) { html.append(inputLine); } in.close(); System.out.println("URL Content... \n"+ html.toString()); }catch (Exception e){ e.printStackTrace(); } return jsonResult;}//DELETEpublic JSONObject detete(UsuarioModel id){ JSONObject jsonResult= new JSONObject(); try { URL obj = new URL(urlWS + id); HttpURLConnection conn = (HttpURLConnection) obj.openConnection(); conn.setRequestMethod("DELETE"); //type: POST, PUT, DELETE conn.setDoOutput(true); conn.setRequestProperty("Accept", "application/json"); conn.setUseCaches(false); conn.setRequestProperty("Accept-Encoding", "gzip"); conn.setRequestProperty("Content-Type", "application/json"); System.out.println("Response code: "+ conn.getResponseCode()); BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line, responseText = ""; while ((line = br.readLine()) != null) { System.out.println("LINE: "+line); responseText += line; } br.close(); conn.disconnect(); }catch (Exception e){ e.printStackTrace(); } return jsonResult;}}
EliminarActivity.java
package muse.pe.com.s13s01pedroso.view;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import org.json.JSONObject;import muse.pe.com.s13s01pedroso.R;import muse.pe.com.s13s01pedroso.controler.UsuarioController;import muse.pe.com.s13s01pedroso.model.UsuarioModel;public class EliminarActivity extends AppCompatActivity {EditText objEliminar;Button objBtnEliminar;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_eliminar); objEliminar = findViewById(R.id.tvEliminar); objBtnEliminar = findViewById(R.id.btnEliminar); objBtnEliminar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } });}public class myAsync extends AsyncTask<String,String,JSONObject> { @Override protected JSONObject doInBackground(String... strings) { UsuarioController ctl = new UsuarioController(); UsuarioModel item = new UsuarioModel(); return ctl.detete(item); } @Override protected void onPreExecute() { } @Override protected void onPostExecute(JSONObject s) { Toast.makeText(EliminarActivity.this,s.toString(),Toast.LENGTH_LONG).show(); }}}