What is this?

This knowledgebase contains questions and answers about PRTG Network Monitor and network monitoring in general. You are invited to get involved by asking and answering questions!

Learn more

PRTG Network Monitor

Intuitive to Use. Easy to manage.
300.000 administrators have chosen PRTG to monitor their network. Find out how you can reduce cost, increase QoS and ease planning, as well.

Free Download

Top Tags


View all Tags

XML: Structural error in xml file, 1 open items.

Votes:

0

Your Vote:

Up

Down

Hi good I have an error with the Python Script Advanced Sensor. the error I get is the following:

XML: Structural error in xml file, 1 open items. -- JSON: The JSON returned does not match the expected structure (Invalid JSON.). (code: PE231).

this would be the scritp I am using

from rauth import OAuth2Service
import json
import requests
import os
import time
import datetime


## proceso para obtener el token del identity server
access_token = None
service = OAuth2Service(
    name="GL",
    client_id="xxxxx",
    client_secret="xxxxx",
    access_token_url='https://xxxxxxxx/pjidentityserver/connect/token'
)
data = {
        'scope': 'xxxxx.descarga.api',
        'grant_type': 'client_credentials'
    }
session = service.get_auth_session(data=data,decoder=json.loads)
access_token = session.access_token

##Proceso para consulta de api https://xxxxxxxx/xxxxxx/api/DescargaArchivoController/DescargarArchivo para la descarga de archivos
urldescarga = "https://xxxxxxxxx/xxxxxxx/api/DescargaArchivoController/DescargarArchivo"
payload = json.dumps({
  "contexto": {
    "codigo": "0900",
    "provieneSIAGPJ": True
  }
})
headers = {
  'P_Archivo': '{"identificador":"xxxxxxxxxxxxxxxxxxxxxxxxxxx","nombreArchivo":"Apremio corporal, ordenarlo (oficio)"}',
  'Authorization': 'Bearer '+access_token,
  'Content-Type': 'application/json'
}

response = requests.request("POST", urldescarga, headers=headers, data=payload)

estado = 0
mensaje_estado = ""
if response.status_code == 200:
      estado = 1
      mensaje_estado = "El Api descarga SI esta funcionando. "
else:
      estado = 0
      mensaje_estado = "El Api descarga NO esta funcionando. "
    

# descarga de archivo
carpeta = "D:/CursoPython-Final/DescargaGL/"
try:
    os.stat(carpeta)
except:
    os.mkdir(carpeta)
open(carpeta+"prueba.pdf", 'wb').write(response.content)

#comprobaciones de tamaña, fecha y si existe archivo

peso_archivo = os.path.getsize(carpeta+"prueba.pdf")
fecha_archivo = os.path.getmtime(carpeta+"prueba.pdf")
existe_archivo = os.path.isfile(carpeta+"prueba.pdf")
# print(peso_archivo)
# print(datetime.datetime.fromtimestamp(fecha_archivo))
# print(existe_archivo)
##peso
estado_peso = 0
mensaje_peso = ""
if peso_archivo >= 0:
      estado_peso = 1
      mensaje_peso = "El archivo SI posee el peso adecuado. "
else:
      estado_peso = 0
      mensaje_peso = "El archivo NO posee el peso adecuado. "
      
#existe_archivo
estado_existe=0
mensaje_existe=""
if existe_archivo == True:
      estado_existe = 1
      mensaje_existe = "El archivo SI se descargo correctamente a la carpeta. "
else:
      estado_existe = 0
      mensaje_existe = "El archivo NO se descargo correctamente a la carpeta. "

print("<? xml version = '1.0' encoding = 'UTF-8'?>")
print("<prtg>")          
print("<result>")
print("<channel>Estado API</channel>")
print("<value>"+str(estado)+"</value>")
print("</result>")
print("<result>")
print("<channel>Tamaño Archivo</channel>")
print("<value>"+str(estado_peso)+"</value>")
print("</result>")
print("<result>")
print("<channel>Descarga</channel>")
print("<value>"+str(estado_existe)+"</value>")
print("</result>")
print("<text>"+ mensaje_estado + mensaje_peso + mensaje_existe+"</text>")
print("</prtg>")

time.sleep(4)
os.remove(carpeta+"prueba.pdf")

errorstructuralxml prtg python scritp

Created on Oct 7, 2021 9:51:23 PM by  Siyyid Barboza (0) 1

Last change on Oct 8, 2021 6:15:22 AM by  Felix Wiesneth [Paessler Support]



Replies

Nobody has replied yet

Why not be the first?

Please log in or register to enter your reply.


Disclaimer: The information in the Paessler Knowledge Base comes without warranty of any kind. Use at your own risk. Before applying any instructions please exercise proper system administrator housekeeping. You must make sure that a proper backup of all your data is available.