Curl mediante http
Hola a todos en la comunidad...
Estoy investigando sobre como realizar un cliente donde pueda enviar comandos mediante la herramienta curl en el protocolo http.
algo como esto:
curl -d "codigo xml | html etc.. " http://direccion-web/
La idea es generar un cliente con Java que envié comandos de forma masiva al servidor mediante http.
Sera de mucha ayuda las ideas que me puedan ofrecer y herramientas, JARS o si alguien implemento algo semejante, para obtener información
para armar el codigo...
Mientras seguiré investigando, muchas gracias por su apoyo...
- linux-genesis's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
jdk
Todo lo que necesitas está en el jdk, no necesitas nada adicional.
Con las clases URL, HttpURLConnection, Executors, y un Runnable que armes para correr muchas instancias en paralelo ya la armaste.
Esto es lo que llevo por el momento...
Al final encontre que existe unas libreria de apache-jakarta-commons que facilitan el trabajo para enviar post desde Http
Agregue los siguientes Jar´s en Build Path de Eclipse:
==========================================
apache-jakarta-commons-httpclient.jar
apache-jakarta-commons-logging-api.jar
apache-jakarta-commons-codec.jar
==========================================
El siguiente codigo ya me obtiene la respuesta como quería, no es necesario utilizar el curl como tenia pensado:
curl -d "codigo xml | html etc.. " http://direccion-web/
Al revisar la documentación oficial de curl, indica que -d ó --data envia POST.
Ahora solamente me hace falta validar la respuesta, para ello estoy pensando leer el XML que me devuelve para acceder a un atributo llamado
result
¿Que es lo mas apropiado para leer el XML de forma eficiente en el Java?
Por cierto llevo relativamente muy poco con el Java...
Gracias por la respuesta ezamudio
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
public class PostXML {
public static void main(String[] args) throws FileNotFoundException{
// Get target URL
String strURL = "Url_de_Conexion";
// Get file to be posted
String strXMLFilename = "C:\\comandoXML.txt";
File input = new File(strXMLFilename);
// Prepare HTTP Post
PostMethod post = new PostMethod(strURL);
post.setRequestEntity(new InputStreamRequestEntity(new FileInputStream(input), input.length()));
// Specify content type and encoding
// If content encoding is not explicitly specified
// ISO-8859-1 is assumed
post.setRequestHeader("Content-type", "text/xml; charset=ISO-8859-1");
// Get HTTP client
HttpClient httpclient = new HttpClient();
// Execute Request
try {
int result = httpclient.executeMethod(post);
// Display status code
System.out.println("Response status code: "+ result);
// Display response
System.out.println("Response body: ");
System.out.println("======================================");
System.out.println(post.getResponseBodyAsString());
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
} finally {
post.releaseConnection();
}
}
}
Saludos...
stress?
ora que si lo que querías eran pruebas de stress o algo así pues está selenium, o gatling...