

{"id":978,"date":"2020-04-28T15:38:06","date_gmt":"2020-04-28T13:38:06","guid":{"rendered":"https:\/\/dornisoft.es\/dorniblog\/?p=978"},"modified":"2021-08-12T23:06:44","modified_gmt":"2021-08-12T21:06:44","slug":"introduccion-a-webservices-con-aplicacion-java-8-y-servidor-php","status":"publish","type":"post","link":"https:\/\/dornisoft.es\/dorniblog\/introduccion-a-webservices-con-aplicacion-java-8-y-servidor-php\/","title":{"rendered":"Introducci\u00f3n a webservices con aplicaci\u00f3n Java 8 y servidor PHP"},"content":{"rendered":"\n<p>Hola, en el art\u00edculo de hoy tratar\u00e9 el tema de webservices.<br>Los webservices son muy \u00fatiles cuando queremos distribuir nuestra aplicaci\u00f3n y, en vez de dar acceso a la base de datos desde la aplicaci\u00f3n directamente con un driver JDBC, lo que hacemos es que sea el webservice el que nos procese las peticiones a la base de datos. De esta manera, no tenemos que incluir la contrase\u00f1a y usuario de la base de datos en la aplicaci\u00f3n a distribuir y corremos menos riesgos de seguridad, ya que un usuario un poco espabilado podr\u00eda descompilar nuestra aplicaci\u00f3n y hacerse con las credenciales de la base de datos.<\/p>\n\n\n\n<p>Usaremos el servidor XAMPP y ubicaremos los archivos php en la carpeta htdocs\/service<\/p>\n\n\n\n<p>Para empezar, crearemos la base de datos(webservice) con una \u00fanica tabla(adjetivos) con 3 campos: Id, adjetivo,fecha.<br>Id (int, auto increment, primary key)<br>adjetivo(varchar)<br>fecha(timestamp)<\/p>\n\n\n\n<p>Ahora crearemos el webservice que ser\u00e1 un archivo php que procese las peticiones que se le env\u00eden desde la aplicaci\u00f3n Java, vamos a hacer que el web service procese dos peticiones, una de insertar datos y otra de hacer una consulta.<\/p>\n\n\n\n<p>El archivo insert.php tendr\u00eda este aspecto<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$adjetivo=$_POST['adjetivo'];\n$db=mysqli_connect(\"localhost\",\"root\",\"\",\"webservice\");\nmysqli_query($db,\"insert into adjetivos (adjetivo)values('$adjetivo')\");\n?><\/pre>\n\n\n\n<p>El archivo select.php tendr\u00eda este aspecto:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;?php\n$db=mysqli_connect(\"localhost\",\"root\",\"\",\"webservice\");\nmysqli_query($db,\"set names 'utf8'\");\n$res=mysqli_query($db,\"select * from adjetivos\");\n$fila=mysqli_fetch_array($res);\ndo{\n\techo $fila[\"adjetivo\"].\",\".$fila[\"fecha\"].\"\\n\";\n\t\n}while($fila=mysqli_fetch_array($res));\n?><\/pre>\n\n\n\n<p>Una vez hecho \u00e9sto haremos nuestra aplicaci\u00f3n en Java que le pasar\u00e1 un par\u00e1metro POST al webservice, \u00e9ste la procesar\u00e1 y nos devolver\u00e1 los resultados en el caso del select o insertar\u00e1 el adjetivo en el caso del insert, para lo que he creado una clase base adjetivos.java para convertir a objetos los resultados de la petici\u00f3n select.<br>La clase adjetivo.java tiene este aspecto:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.util.Objects;\n\n\/**\n *\n * @author Javi\n *\/\npublic class adjetivos {\n    private int id;\n    private String adjetivo;\n    private String fecha;\n\n    public adjetivos(String adjetivo) {\n        this.adjetivo = adjetivo;\n    }\n\n    public adjetivos(String adjetivo, String fecha) {\n        this.adjetivo = adjetivo;\n        this.fecha = fecha;\n    }\n\n    public int getId() {\n        return id;\n    }\n\n    public void setId(int id) {\n        this.id = id;\n    }\n\n    public String getAdjetivo() {\n        return adjetivo;\n    }\n\n    public void setAdjetivo(String adjetivo) {\n        this.adjetivo = adjetivo;\n    }\n\n    public String getFecha() {\n        return fecha;\n    }\n\n    public void setFecha(String fecha) {\n        this.fecha = fecha;\n    }\n\n    @Override\n    public String toString() {\n        return \"adjetivo{ adjetivo=\" + adjetivo + \", fecha=\" + fecha + \"}\\n\";\n    }<\/pre>\n\n\n\n<p>Usar\u00e9 2 clases con main, una para el ejemplo con insert y otra para el ejemplo con select.<br>En la clase main correspondiente al insert, le pasaremos un par\u00e1metro POST a PHP para que lo procese y lo inserte en la base de datos, esta clase ser\u00eda una como la siguiente:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.io.OutputStream;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\n\n\n\n\n\n\/**\n *\n * @author Javi\n *\/\npublic class Servicio {\n\n    \/**\n     * @param args the command line arguments\n     *\/\n    \n    private static final String USER_AGENT = \"Mozilla\/5.0\";\n\n    private static final String POST_URL = \"http:\/\/localhost\/service\/insert.php\";\n\n    private static final String POST_PARAMS = \"adjetivo=encomiable\";\n    \n    \n    public static void main(String[] args) throws IOException {\n       \n\n          sendPOST();\n    }\n    \n    private static void sendPOST() throws IOException {\n        URL obj = new URL(POST_URL);\n        HttpURLConnection httpURLConnection = (HttpURLConnection) obj.openConnection();\n        httpURLConnection.setRequestMethod(\"POST\");\n        httpURLConnection.setRequestProperty(\"User-Agent\", USER_AGENT);\n\n        \/\/ Aqui le pasamos los parametros\n        httpURLConnection.setDoOutput(true);\n        OutputStream os = httpURLConnection.getOutputStream();\n        os.write(POST_PARAMS.getBytes());\n        os.flush();\n        os.close();\n        \/\/ Una vez pasados los parametros recibimos el codigo de respuesta\n\n        int responseCode = httpURLConnection.getResponseCode();\n        System.out.println(\"POST Response Code :: \" + responseCode);\n\n       \n    }\n    \n}<\/pre>\n\n\n\n<p>El c\u00f3digo anterior pasar\u00e1 un par\u00e1metro al archivo php con el adjetivo encomiable y ser\u00e1 php el encargado de insertarlo en la base de datos<\/p>\n\n\n\n<p>Ahora seguiremos haciendo un select de la tabla adjetivos y transformando los resultados en un arrayList de objetos adjetivos, en este caso no le vamos a pasar par\u00e1metros al select por lo que el par\u00e1metro ser\u00e1 una cadena vac\u00eda, el siguiente c\u00f3digo muestra como se debe proseguir<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.io.OutputStream;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.util.ArrayList;\n\n\n\/**\n *\n * @author Javi\n *\/\npublic class leerphp2 {\n\n    \/**\n     * @param args the command line arguments\n     *\/\n     private static final String USER_AGENT = \"Mozilla\/5.0\";\n\n    private static final String POST_URL = \"http:\/\/localhost\/service\/select.php\";\n\n    private static final String POST_PARAMS = \"\";\n    \n    \n    \n    public static void main(String[] args) throws IOException {\n        \/\/ TODO code application logic here\n        sendPOST();\n    }\n    private static void sendPOST() throws IOException {\n        ArrayList &lt;adjetivos> mati = new ArrayList&lt;>();\n        \n        URL obj = new URL(POST_URL);\n        HttpURLConnection httpURLConnection = (HttpURLConnection) obj.openConnection();\n        httpURLConnection.setRequestMethod(\"POST\");\n        httpURLConnection.setRequestProperty(\"User-Agent\", USER_AGENT);\n\n        \/\/ For POST only - START\n        httpURLConnection.setDoOutput(true);\n        OutputStream os = httpURLConnection.getOutputStream();\n        os.write(POST_PARAMS.getBytes());\n        os.flush();\n        os.close();\n        \/\/ For POST only - END\n\n        int responseCode = httpURLConnection.getResponseCode();\n        System.out.println(\"POST Response Code :: \" + responseCode);\n\n        if (responseCode == HttpURLConnection.HTTP_OK) { \/\/ success\n            BufferedReader in = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream()));\n            String inputLine;\n            StringBuffer response = new StringBuffer();\n\n            while ((inputLine = in .readLine()) != null) {\n                response.append(inputLine);\n                \n                String [] fields = inputLine. split(\",\");\n                mati.add(new adjetivos (fields[0],fields[1]));\n                \n            } in .close();\n\n            \/\/ print result\n            System.out.println(response.toString());\n        } else {\n            System.out.println(\"POST request not worked\");\n        }\n        System.out.println(\"Escribiendo array\");\n        for (int i = 0; i &lt; mati.size(); i++) {\n            System.out.println(mati.get(i).toString()+\"\\n\");\n            \n        }\n    }\n}<\/pre>\n\n\n\n<p>Enlace de inter\u00e9s<a href=\"\u201dhttps:\/\/www.javaguides.net\/2019\/07\/java-http-getpost-request-example.html\u201d\">JAVA POST<\/a><\/p>\n\n\n\n<p>Espero que te haya gustado \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hola, en el art\u00edculo de hoy tratar\u00e9 el tema de webservices.Los webservices son muy \u00fatiles cuando queremos distribuir nuestra aplicaci\u00f3n y, en vez de dar acceso a la base de datos desde la aplicaci\u00f3n directamente con un driver JDBC, lo que hacemos es que sea el webservice el que nos procese las peticiones a la &hellip; <a href=\"https:\/\/dornisoft.es\/dorniblog\/introduccion-a-webservices-con-aplicacion-java-8-y-servidor-php\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abIntroducci\u00f3n a webservices con aplicaci\u00f3n Java 8 y servidor PHP\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-978","post","type-post","status-publish","format-standard","hentry","category-programacion"],"_links":{"self":[{"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/posts\/978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/comments?post=978"}],"version-history":[{"count":9,"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/posts\/978\/revisions"}],"predecessor-version":[{"id":1288,"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/posts\/978\/revisions\/1288"}],"wp:attachment":[{"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/media?parent=978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/categories?post=978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dornisoft.es\/dorniblog\/wp-json\/wp\/v2\/tags?post=978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}