|
Mostrar Mensajes
|
Páginas: [1] 2
|
1
|
Programación / PHP / corregir error XML externo
|
en: 21 Julio 2012, 11:32 am
|
Hola, os cuento mi problema: Estoy parseando un XML externo a mi mediante el metodo simplexml_load_file. El caso es que a veces el XML contiene errores por caracteres mal codificados supongo, por lo que la función casca y no funciona mi script. El XML lo obtengo de aquí: http://odds.betgun.com/ (ahora mismo si tiene un error, no se dentro de unas horas) Como una solución parcial descargaba el fichero y corregía el carácter mal codificado a mano y ya funcionaba, pero lógicamente esto implica saber que carácter es, por lo que me resulta difícil automatizarlo. ¿Existe algún método para corregir esto y poder parsear el XML aunque tenga errores en su formación? Un saludo y muchas gracias
|
|
|
3
|
Programación / Desarrollo Web / web service con Jquery
|
en: 4 Junio 2012, 18:24 pm
|
Hola, estoy haciendo una web de ejemplos para aprender un poquito de Jquery. Hasta ahora la cosa fue bastante bien, pero me he encontrado con un problema: Mi idea es hacer un cliente de un web service, en concreto este: http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx?op=Consulta_DNPRCpero siempre que hago la llamada obtengo un "undefined error" y ya no se por donde buscar el fallo. Mi codigo es el siguiente: function refCatastral() { var wsUrl = "http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCallejero.asmx";
var soapRequest = '<?xml version="1.0" encoding="utf-8"?>'+ '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"'+ 'xmlns:xsd="http://www.w3.org/2001/XMLSchema"'+ 'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'+ '<soap:Body>'+ '<Provincia xmlns="http://www.catastro.meh.es/">Madrid</Provincia>'+ '<Municipio xmlns="http://www.catastro.meh.es/">Madrid</Municipio>'+ '<RefCat xmlns="http://www.catastro.meh.es/">1749101VK4714H0001KW</RefCat>'+ '</soap:Body>'+ '</soap:Envelope>';
$.ajax({ type: "POST", url: wsUrl, contentType: "text/xml; charset=\"utf-8\"", dataType: "xml", data: soapRequest, success: processSuccess, error: processError }); alert(soapRequest); }
function processSuccess(data, status, req) { alert(req); }
function processError(data, status, req) { alert(req.responseText + " " + status); }
¿Alguien sabe por donde puede estar fallando? Un saludo. Gracias.
|
|
|
5
|
Programación / Programación C/C++ / Re: Ejecutar commando y leer resultado
|
en: 14 Junio 2010, 19:30 pm
|
Gracias, eso es otra forma de hacerlo pero creo que no se adecua a mi problema, ya que tengo un programa principal que genera varios hilos y en cada hilo quiero que lanze el commando con los datos de cada hilo, por lo que no me vale ejecutar el commando y pasar el resultado por un pipe a mi programa principal.
Lo haré redirigiendo la salida del commando a un fichero auxiliar, pero gracias de todas formas.
|
|
|
6
|
Programación / Programación C/C++ / Ejecutar commando y leer resultado
|
en: 14 Junio 2010, 17:33 pm
|
Hola, ya se que para ejecutar un commando Linux desde C se puede hacer con system() o con execv(), pero no me interesa eso si no leer el resultado ya que se trata de una peticion OSCP para conocer el estado de unc ertificado. El comando seria ago así: 'openssl ocsp -CAfile FICHEROCA -issuer FICHEROCASUBORDINADA -cert CERTIFICADO -url oscp.dnie.es'
Sólo se me ocurre redirigir la salida del comando a un fichero auxiliar y luego leer el contenido comando > ficheroAuxiliar
pero no se si habrá una forma más directa o sencilla de hacer esto. ¿Alguna Idea? Gracias.
|
|
|
7
|
Programación / Programación C/C++ / Servidor SSL con Pthreads
|
en: 11 Junio 2010, 15:35 pm
|
Hola, estaba haciendo un pequeño servidor SSL que pudiese atender a multiples clientes a la vez. Cogí un ejemplo que encontre por internet y trabaje sobre el: #define NUM_THREADS 5
//−−− S e r v i d o r −−−−−−−−−− −−−−−−−−−−−−−−−−−−−−−−−−−− // R e a l i z a r e l p r o c e d i m i e n t o s e r v i c i o −−−−−−−−−−−−−−−
void *Servidor(void *threadarg){ char buf[1024]; char reply[1024]; int sd, bytes; const char* HTMLecho="Esto solo es el mensaje de mi servidor SSL multihilo";
// Estructura donde se guardan los parametros de los threads struct thread_data *my_data; int taskid; // Parser de los datos de la estructura a variables my_data=(struct thread_data*)threadarg; taskid=my_data->thread_id; SSL *ssl=my_data->message; HTMLecho=my_data->reto;
printf("Inicia Servidor\n"); if(SSL_accept(ssl)==FAIL){ printf("Hubo un error en el SSL accept\n"); ERR_print_errors_fp(stderr); } else{ printf("SSL accept fue exitoso\n"); //MostrarCertificados(ssl); bytes=SSL_read(ssl,buf,sizeof(buf)); if(bytes>0){ buf[bytes]=0; printf("Mensaje cliente [%d]: %s\n", taskid,buf);
sprintf(reply,HTMLecho,buf); sleep (30); //SSL_write(ssl,reply,strlen(reply)); SSL_write(ssl,reply,20); } else ERR_print_errors_fp(stderr); } sd=SSL_get_fd(ssl); SSL_free(ssl); close(sd); }
//−−− Main −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Se e n c a r g a de c r e a r e l s e r v i d o r
int main(int count, char *strings[]){ //Arreglo de hilos pthread_t threads[NUM_THREADS]; struct thread_data thread_data_array[NUM_THREADS]; int t=0; int rc; SSL_CTX *ctx; int server; char *portnum; SSL_library_init(); if(count!= 2){ printf("Uso : %s <portnum>\n", strings[0]); exit(0); }
//Genero el reto printf("Generando reto...\n"); /* Longitud del reto */ unsigned short int length = 20; char reto[20]; /* Seed number for rand() */ srand((unsigned int) time(0) + getpid()); /* ASCII characters 33 to 126 */ int aux=0; while(length--) { reto[aux]=putchar(rand() % 94 + 33); srand(rand()); aux++; } reto[aux]='\0'; printf("\n"); //imprimirReto(reto); const char* HTMLecho; HTMLecho=reto;
portnum = strings [1]; ctx=IniciarCTXServidor(); CargarCertificados(ctx,"/home/xabi/Escritorio/examples/ssl/proyecto/certificados/servidor/server.crt","/home/xabi/Escritorio/examples/ssl/proyecto/certificados/servidor/server.key");//Certificado y clave server=CrearSocket(atoi(portnum)); printf("Esperando por conexiones[%d]\n", server); printf("Inicia a aceptar conexiones\n"); while(1){ struct sockaddr_in addr; SSL *ssl; int len=sizeof(addr); int client=accept(server,(struct sockaddr*)&addr,&len); printf("Connection: %d %d\n",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port)); ssl=SSL_new(ctx); // Se crea contexto SSL_set_fd(ssl,client); t++; // Se da numero de pthread thread_data_array[t].thread_id=t; // Se le da el id del thread al thread thread_data_array[t].message=ssl; // Se le da el asigna el contexto de la conexion al thread
thread_data_array[t].reto=(char *)HTMLecho;
rc=pthread_create(&threads[t],NULL,Servidor,(void *)&thread_data_array[t]); // Se crea el hilo y se le manda la estructura llenada previamente
if(t==NUM_THREADS){ //DUDA!!!!!!!!! sleep(5); t=0; }
} close(server); SSL_CTX_free(ctx); }
Como veis para cada peticion que llega crea un hilo que atiende esta petición y tengo definido un máximo de 5 peticiones. De esta forma funcionaba, pero después de la 5 petcion , al llegar la 6 lógicaente da un error de segmentacion. Así que decidi poner, si llega a la 5 petición pongo el contador a 0 y que siga creando hilos, perono estoy seguro de que este bien ya que vuelvo a crear un hilo con id=0 por ejemplo igual que el otro hilo id=0 que no se si acabo o no y supongo que puede darme problemas de concurrecia en el futuro. Alguna idea de como mejorar esto? Gracias
|
|
|
8
|
Programación / Java / descargar codigo web problema codificacion
|
en: 22 Abril 2010, 20:24 pm
|
Wenas. Tengo un codigo que mediante la clase URL conecta a una web descarga el contenido y lo guarda en el fichero. Este sería el código más o menos: String HTTPString = "http://"+host+":"+port+"/"+fileName; URL theURL = new URL(HTTPString);
InputStream inStream = theURL.openStream(); BufferedReader input = new BufferedReader(new InputStreamReader(inStream)); String response; response = input.readLine(); // read and display one line at a time
indice=fileName.indexOf("una/"); indice2=fileName.indexOf(".html"); String nombreFichero = fileName.substring(indice+4,indice2+5);
String ruta = "/home/linux1/Recolector/webs/"+nombreFichero; File fichero = new File(ruta); if (fichero.length()==0){ fichero.createNewFile(); BufferedWriter out = new BufferedWriter(new FileWriter(fichero, true)); while (response != null) { //System.out.println(response); out.write(response); response = input.readLine(); } //end while out.close(); }
Funcionar funciona perfectamente, el único problema es que en el archivo que genera no se muestran correctamente ni los acentos ni las eñes. Alguna idea? Gracias.
|
|
|
10
|
Programación / Java / [SOLUCIONADO]Duda cliente web (Java)
|
en: 22 Marzo 2010, 12:49 pm
|
Hola, estoy haciendo uncliente web para conectar a esta pagina: http://www.enalquiler.com/alquiler-pamplona-iruna-34-1-0-33885.htmlLogro conectar bien y descargar el código, pero ahora quiero poder redirigirme a la siguiente paginas (pagina 1, pagina 2, pagina 3...) el problema es que esta pagina no tiene enlaces directos sino que va con javascript y no se como hacerlo muy bien. Mi idea era pasarle por el metodo post el numero de pagina pero o no se pasa así o le hacen falta pasr mas datos. Mi codigo es: import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection;
public class Main {
public static void main(String[] args) throws Exception { URL url = new URL("http://www.enalquiler.com/alquiler-pamplona-iruna-34-1-0-33885.html"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());
writer.write("numpag=2");------> Peticion Post writer.flush(); String line; BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); while ((line = reader.readLine()) != null) { System.out.println(line); } writer.close(); reader.close();
} }
El caso es que siempr descarga la primera página, y no logro avanzar a la pagina 2. Alguna idea? Gracias.
|
|
|
|
|
|
|