Foros del Web » Programando para Internet » PHP »

Tamáño máximo de la respuesta de XAJAX y NuSOAP

Estas en el tema de Tamáño máximo de la respuesta de XAJAX y NuSOAP en el foro de PHP en Foros del Web. Muy buenas, Estoy empezando a trabajar con la clase XAJAX de PHP y me he encontrado con un problema muy extraño que no consigo solucionar. ...
  #1 (permalink)  
Antiguo 02/06/2008, 08:40
Avatar de Scour  
Fecha de Ingreso: octubre-2003
Ubicación: Murcia (España)
Mensajes: 94
Antigüedad: 20 años, 5 meses
Puntos: 0
Tamáño máximo de la respuesta de XAJAX y NuSOAP

Muy buenas,

Estoy empezando a trabajar con la clase XAJAX de PHP y me he encontrado con un problema muy extraño que no consigo solucionar. Resulta que cuando la respuesta del servidor supera X número de caracteres, no me devuelve nada, si es menor si...

Tengo la siguiente función:

Código PHP:
function llamada() {
    require_once(
"lib/nusoap.php");
    
$oSoapClient=new nusoap_client('http://XXX.XXX.XXX.XXX:80/servicios/Service.asmx?WSDL'true); 
    
$aRespuesta=$oSoapClient->call("Paises2"); 
    
    foreach (
$aRespuesta['Paises2Result']['diffgram']['NewDataSet']['Table1'] as $Clave => $aElemento) {
        
$Respuesta .= rtrim($aElemento["pai_castel"])."<br />";
        if (
strlen($Respuesta) > 1040) {
            break;
        }
    }
    
    
$Respuesta strlen($Respuesta)."<br />".$Respuesta;
    
    
$objResponse=new xajaxResponse();
    
$objResponse->assign('Recibe''innerHTML'$Respuesta);
    
    
    return 
$objResponse;

La función simpelmente devuelve una lista con todos los paises del mundo a través de un servicio SOAP (clase NuSOAP).

Como se vé en el bucle que recorre el array, he puesto que cuando los caracteres superen los 1040 elementos, salga del bucle y envíe la respuesta. Con 1040 ya no me devuelve nada, si le pongo 1030 si funciona, pero evidentemente no me devuelve todos los paises, sino solo los que entren dentro de los primeros 1030 caracteres...

El caso, es que si le pongo en la función, 'a pelo':

Código PHP:
$Respuesta "1111111...111111"
Siendo los puntos miles de caracteres, me ddevuelve 10.000 y 20.000 caracteres sin problema...

Si a la clase XAJAX le activo el debug, y le quito el límite de 1040 caracteres, me devuelve esto:

Código:
Mon Jun 2 16:22:34 UTC+0200 2008
DONE [531ms]Mon Jun 2 16:22:34 UTC+0200 2008
RECEIVED [status: 200, size: 3756 bytes, time: 500ms]:<?xml version="1.0" encoding="utf-8" ?><xjx><cmd n="as" t="Recibe" p="innerHTML"><![CDATA[3639<br />AFGANISTAN<br />ALBANIA<br />ALEMANIA<br />AMERICAN SAMOA<br />ANDORRA<br />ANGOLA<br />ANGUILLA<br />ANTIGUA Y BARBUDA<br />ANTILLAS NEERLANDESAS<br />ARABIA SAUDITA<br />ARGELIA<br />ARGENTINA<br />ARMENIA<br />ARUBA<br />AUSTRALIA<br />AUSTRIA<br />AZERBAIJAN<br />BAHAMAS<br />BAHREIN<br />BANGLADESH<br />BARBADOS<br />BELGICA<br />BELICE<br />BENIN<br />BERMUDAS<br />BIELORRUSIA<br />BOLIVIA<br />BOSNIA-HERZEGOVINA<br />BOTSWANA<br />BRASIL<br />BRUNEI<br />BULGARIA<br />BURKINA FASO<br />BURMA (See MM MYANMA<br />BURUNDI<br />BUTAN<br />CABO VERDE<br />CAMBOYA<br />CAMERUN<br />CANADA<br />CHAD<br />CHILE<br />CHINA<br />CHIPRE<br />CHRISTMAS ISLANDS<br />COCOS (KEELING) ISLA<br />COLOMBIA<br />COMORAS<br />CONGO<br />COOK ISLANDS<br />COREA DEL NORTE<br />COREA DEL SUR<br />COSTA DE MARFIL<br />COSTA RICA<br />CROACIA<br />CUBA<br />DESCONOCIDO<br />DINAMARCA<br />DJIBOUTI<br />DOMINICA<br />EAST TIMOR<br />ECUADOR<br />EGIPTO<br />EL SALVADOR<br />EMIRATOS ARABES UNIDOS<br />ERITREA<br />ESLOVAQUIA<br />ESLOVENIA<br />ESPA�<br />ESTADOS UNIDOS DE AMERICA<br />ESTONIA<br />ETIOPIA<br />FED. ESTADOS DE MICRONESIA<br />FIDJI<br />FILIPINAS<br />FINLANDIA<br />Former Czechoslovaki<br />Former USSR (for ref<br />FRANCIA<br />FRENCH GUIANA<br />GABON<br />GAMBIA<br />GEORGIA<br />GHANA<br />GIBRALTAR<br />GRANADA<br />GRECIA<br />GROENLANDIA<br />GUADELOUPE<br />GUAM<br />GUATEMALA<br />GUINEA<br />GUINEA ECUATORIAL<br />GUINEA-BISSAU<br />GUYANA<br />HAITI<br />HONDURAS<br />HONG KONG<br />HUNGRIA<br />INDIA<br />INDONESIA<br />IRAK<br />IRAN<br />IRLANDA<br />ISLANDIA<br />ISLAS CAIMAN<br />ISLAS FEROE<br />ISLAS MALVINAS (FALKLAND)<br />ISLAS MARSHALL<br />ISLAS SALOMON<br />ISLAS TURCAS Y CAICOS<br />ISLAS VIRGENES (G.B.)<br />ISLAS WALLIS Y FUTUNA<br />ISRAEL<br />ITALIA<br />JAMAICA<br />JAPON<br />JORDANIA<br />KAZAKHSTAN<br />KENIA<br />KIRGUIZISTAN<br />KIRIBATI<br />KUWAIT<br />LAOS<br />LESOTHO<br />LETONIA<br />LIBANO<br />LIBERIA<br />LIBIA<br />LIECHTENSTEIN<br />LITUANIA<br />LUXEMBURGO<br />MACAO<br />MACEDONIA<br />MADAGASCAR<br />MALASIA<br />MALAWI<br />MALDIVAS, ISLAS<br />MALI<br />MALTA<br />MARRUECOS<br />MARTINIQUE<br />MAURICIO<br />MAURITANIA<br />MEXICO<br />MOLDAVIA<br />MONACO<br />MONGOLIA<br />MONTSERRAT<br />MOZAMBIQUE<br />MYANMAR (former BURM<br />NAMIBIA<br />NAURU<br />NEPAL<br />NICARAGUA<br />NIGER<br />NIGERIA<br />NIUE<br />NORFOLK ISLAND<br />NORTHERN MARIANAS<br />NORUEGA<br />NUEVA CALEDONIA<br />NUEVA ZELANDA<br />OMAN<br />PAISES BAJOS (HOLANDA)<br />PAKISTAN<br />PALAU<br />PANAMA<br />PAPUA NUEVA GUINEA<br />PARAGUAY<br />PERU<br />POLINESIA FRANCESA<br />POLONIA<br />PORTUGAL<br />PUERTO RICO<br />QATAR<br />REINO UNIDO<br />REP.FEDERATIVA DE YUGOSLAVIA<br />REPUBLICA CENTROAFRICANA<br />REPUBLICA CHECA<br />REPUBLICA DOMINICANA<br />REUNION<br />RUANDA<br />RUMANIA<br />RUSIA<br />SAMOA OCCIDENTAL<br />SAN CRISTOBAL Y NEVIS<br />SAN MARINO<br />SAN PEDRO Y MIQUELON<br />SAN TOME Y PRINCIPE<br />SAN VICENTE<br />SANTA ELENA Y DEPENDENCIAS<br />SANTA LUCIA<br />SENEGAL<br />SEYCHELLES<br />SIERRA LEONA<br />SINGAPUR<br />SIRIA<br />SOMALIA<br />SRI LANKA<br />SUDAFRICA<br />SUDAN<br />SUECIA<br />SUIZA<br />SURINAN<br />SWAZILANDIA<br />TAILANDIA<br />TAIWAN<br />TAJIKISTAN<br />TALLER<br />TALLER<br />TANZANIA.<br />TOGO<br />TONGA<br />TRINIDAD Y TOBAGO<br />TUNEZ<br />TURKMENISTAN<br />TURQUIA<br />TUVALU<br />UCRANIA<br />UGANDA<br />UNITED STATES VIRGIN<br />URUGUAY<br />US MINOR OUTLYING IS<br />UZBEKISTAN<br />VANUATU<br />VENEZUELA<br />VIETNAM<br />WESTERN SAHARA<br />YEMEN<br />ZAIRE<br />ZAMBIA<br />ZIMBABWE<br />]]></cmd></xjx>Mon Jun 2 16:22:34 UTC+0200 2008
SENT [33 bytes]Mon Jun 2 16:22:34 UTC+0200 2008
SENDING REQUESTMon Jun 2 16:22:34 UTC+0200 2008
CALLING: xjxfun: llamadaURI: http://www.web.com/prueba/ Mon Jun 2 16:22:34 UTC+0200 2008
POST: xjxfun=llamada&xjxr=1212416554147Mon Jun 2 16:22:34 UTC+0200 2008
INITIALIZING REQUEST OBJECTMon Jun 2 16:22:34 UTC+0200 2008
PREPARING REQUESTMon Jun 2 16:22:34 UTC+0200 2008
PROCESSING PARAMETERS [0]Mon Jun 2 16:22:34 UTC+0200 2008
INITIALIZING REQUESTMon Jun 2 16:22:34 UTC+0200 2008
STARTING XAJAX REQUEST


Como se vé, en el debug pone como salida todos los paises, que concrétamente son 3639 caracteres, pero en la Web no escribe nada...

¿A alguien se le ocurre a qué se puede deber que XAJAX no devuelva nada, solo cuando la respuesta la devuelve un servicio SOAP a través de XAJAX y supera X caracteres?

He probado a aumentarle el timeout a XAJAX de 6000 a 12000, pero sigue igual, y en cualquier caso, la ejecución del servicio SOAP no tarda ni un segundo...

PD: Si ejecuto la consulta SOAP sin XAJAX, directamente al cargar la Web, funciona perfectamente...

Última edición por Scour; 02/06/2008 a las 08:47
  #2 (permalink)  
Antiguo 02/06/2008, 10:12
Avatar de Scour  
Fecha de Ingreso: octubre-2003
Ubicación: Murcia (España)
Mensajes: 94
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Tamáño máximo de la respuesta de XAJAX y NuSOAP

Parece que este problema solo me sucede con Internet Explorer, con FireFox si funciona correctamente.

Y la librería NuSOAP tampoco debe tener nada que ver, por que si en puesto de SOAP lanzo una query contra base de datos sucede igual (lo extraño, es que si no es ni query ni SOAP, sino una variable a la que le asigno miles de caracteres, funciona perfectamente)...

Por si no consigo solucionar esto, conoceis alguna otra clase de AJAX para PHP que sea estable y sencilla?

Muchas gracias.
  #3 (permalink)  
Antiguo 02/06/2008, 14:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Tamáño máximo de la respuesta de XAJAX y NuSOAP

Hola Scour,

Como haz dicho el problema es IE, y es en concreto con AJAX, te invito a que vayas al foro de AJAX y busques, la única solución fue devolver el request por partes y armar luego la salida en Javascript.

Saludos.
  #4 (permalink)  
Antiguo 03/06/2008, 00:27
Avatar de Scour  
Fecha de Ingreso: octubre-2003
Ubicación: Murcia (España)
Mensajes: 94
Antigüedad: 20 años, 5 meses
Puntos: 0
Respuesta: Tamáño máximo de la respuesta de XAJAX y NuSOAP

Entonces, da igual la clase que se utilice? simplemente es un problema nativo de AJAX en IE?

Menudos profesionales de Microsoft...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:00.