Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Broken en Junio 13, 2019, 12:32:26 AM

Título: error al leer una llamada http
Publicado por: Broken en Junio 13, 2019, 12:32:26 AM
Hola hace nada que he empezado a trabajar con llamadas http para escribir y leer datos desde un archivo online.
Puedo enviar datos a un archivo alojado en mi host y tambien leer sus datos. El problema es que de vez en cuando al leer los valores me salta este error.

############################################################################################
FATAL ERROR in
action number 1
of Async Event: HTTP
for object load:

file_text_write_string argument 2 incorrect type (undefined) expecting a String (YYGS)
at gml_Object_load_Other_62 (line 11) -         file_text_write_string(file, result);
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Object_load_Other_62 (line 11)


Alguien que sepa sobre los eventos http puede ayudarme con este error??
Título: Re:error al leer una llamada http
Publicado por: bygdle en Junio 13, 2019, 03:56:32 AM
Estás intentando escribir el valor undefined en un archivo de texto. Muestra el código que usas para poderte ayudar.
Título: Re:error al leer una llamada http
Publicado por: Broken en Junio 13, 2019, 05:13:26 PM
este es el codigo var result, evid;
evid = ds_map_find_value(async_load, "id");

switch (evid) {
    case async_ini:
        result = ds_map_find_value(async_load, "result");
        file_delete("Data.ini");
        file = file_text_open_write( "Data.ini" );
        file_text_write_string(file, result);
        file_text_close(file);
       

       
        alarm[0] = 1;
        break;
}


pero parece que lo arregle poniendo esta condicion si recibo el valor undefined, de momento no me esta dando el problema
var result, evid;
evid = ds_map_find_value(async_load, "id");

switch (evid) {
    case async_ini:
        result = ds_map_find_value(async_load, "result");
if result = undefined{

}else{
        file_delete("Data.ini");
        file = file_text_open_write( "Data.ini" );
        file_text_write_string(file, result);
        file_text_close(file);
       

       
        alarm[0] = 1;
        break;
}

}
Título: Re:error al leer una llamada http
Publicado por: kostra en Junio 17, 2019, 09:08:11 AM
Será que result no es string? Prueba poner string(result) cuando escribes en el file.
Y si result es nulo, ya lo veras escrito xd
Título: Re:error al leer una llamada http
Publicado por: bygdle en Junio 18, 2019, 03:50:14 AM
Te falta comprobar que la respuesta del servidor haya terminado de llegar antes de guardarla en el archivo.
[gml]
if async_load[? 'status'] == 0 { //si el servidor ha respondido
    //bla bla bla
}
[/gml]