Index: trunk/zoo-project/zoo-kernel/service_internal.c
===================================================================
--- trunk/zoo-project/zoo-kernel/service_internal.c	(revision 342)
+++ trunk/zoo-project/zoo-kernel/service_internal.c	(revision 344)
@@ -2479,4 +2479,7 @@
     fsize=res.nDataLen;
   }
+  if(fsize==0){
+    return errorException(m, _("Unable to download the file."), "InternalError");
+  }
   map* tmpMap=getMapOrFill(content,"value","");
   free(tmpMap->value);
Index: trunk/zoo-project/zoo-kernel/ulinet.c
===================================================================
--- trunk/zoo-project/zoo-kernel/ulinet.c	(revision 342)
+++ trunk/zoo-project/zoo-kernel/ulinet.c	(revision 344)
@@ -486,4 +486,10 @@
   size_t dwRead;
   InternetReadFile(res,(LPVOID)tmpValue,res.nDataLen,&dwRead);
+  fprintf(stderr,"content downloaded (%d) (%s) \n",dwRead,tmpValue);
+  if(dwRead==0){
+    JS_SET_RVAL(cx, argv1,STRING_TO_JSVAL(JS_NewStringCopyN(cx,"Unable to access the file.",strlen("Unable to access the file."))));
+    return JS_TRUE;
+  }
+
 #ifdef ULINET_DEBUG
   fprintf(stderr,"content downloaded (%d) (%s) \n",dwRead,tmpValue);
Index: trunk/zoo-project/zoo-kernel/zoo_service_loader.c
===================================================================
--- trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 342)
+++ trunk/zoo-project/zoo-kernel/zoo_service_loader.c	(revision 344)
@@ -768,5 +768,5 @@
   
   /**
-   * Create the input maps data structure
+   * Create the input and output maps data structure
    */
   int i=0;
@@ -986,6 +986,9 @@
 	  }
 	  tmpmaps->name=strdup(tmpn);
-	  if(tmpv!=NULL)
-	    tmpmaps->content=createMap("value",tmpv+1);
+	  if(tmpv!=NULL){
+	    char *tmpvf=url_decode(tmpv+1);
+	    tmpmaps->content=createMap("value",tmpvf);
+	    free(tmpvf);
+	  }
 	  else
 	    tmpmaps->content=createMap("value","Reference");
