{"record":{"id":"284040b41e5b4535","repo":"pentaho/pentaho-kettle","slug":"httppostmeta-exception-unabletoreadstepinfo","errorCode":null,"errorMessage":"HTTPPOSTMeta.Exception.UnableToReadStepInfo","messagePattern":"HTTPPOSTMeta\\.Exception\\.UnableToReadStepInfo","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/httppost/HTTPPOSTMeta.java","lineNumber":492,"sourceCode":"        argumentHeader[i] = YES.equalsIgnoreCase( XMLHandler.getTagValue( anode, \"header\" ) );\n      }\n\n      int nrquery = XMLHandler.countNodes( lookup, \"query\" );\n      allocateQuery( nrquery );\n\n      for ( int i = 0; i < nrquery; i++ ) {\n        Node anode = XMLHandler.getSubNodeByNr( lookup, \"query\", i );\n        queryField[i] = XMLHandler.getTagValue( anode, \"name\" );\n        queryParameter[i] = XMLHandler.getTagValue( anode, \"parameter\" );\n      }\n\n      fieldName = XMLHandler.getTagValue( stepnode, \"result\", \"name\" ); // Optional, can be null\n      resultCodeFieldName = XMLHandler.getTagValue( stepnode, \"result\", \"code\" ); // Optional, can be null\n      responseTimeFieldName = XMLHandler.getTagValue( stepnode, \"result\", \"response_time\" ); // Optional, can be null\n      responseHeaderFieldName =\n        XMLHandler.getTagValue( stepnode, \"result\", \"response_header\" ); // Optional, can be null\n    } catch ( Exception e ) {\n      throw new KettleXMLException(\n        BaseMessages.getString( PKG, \"HTTPPOSTMeta.Exception.UnableToReadStepInfo\" ), e );\n    }\n  }\n\n  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {\n    try {\n      postafile = rep.getStepAttributeBoolean( id_step, \"postafile\" );\n      encoding = rep.getStepAttributeString( id_step, \"encoding\" );\n      url = rep.getStepAttributeString( id_step, \"url\" );\n      urlInField = rep.getStepAttributeBoolean( id_step, \"urlInField\" );\n      urlField = rep.getStepAttributeString( id_step, \"urlField\" );\n      requestEntity = rep.getStepAttributeString( id_step, \"requestEntity\" );\n      httpLogin = rep.getStepAttributeString( id_step, \"httpLogin\" );\n      httpPassword =\n        Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( id_step, \"httpPassword\" ) );\n      proxyHost = rep.getStepAttributeString( id_step, \"proxyHost\" );\n      proxyPort = rep.getStepAttributeString( id_step, \"proxyPort\" );\n      socketTimeout = rep.getStepAttributeString( id_step, \"socketTimeout\" );","sourceCodeStart":474,"sourceCodeEnd":510,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/httppost/HTTPPOSTMeta.java#L474-L510","documentation":"HTTPPOSTMeta.readData parses the step's XML node with XMLHandler; any Exception while reading the saved configuration (malformed XML structure, unexpected node types, class issues) is wrapped in a KettleXMLException with 'HTTPPOSTMeta.Exception.UnableToReadStepInfo'.","triggerScenarios":"loadXML -> readData processes a <step> node for an HTTPPOST step; an exception occurs reading tags (connection, url, fields, result nodes) at line 492, caught and rethrown as KettleXMLException.","commonSituations":"Hand-edited or truncated .ktr file; XML produced by a newer PDI version being loaded by an older one; corrupt file transfer; copy-paste of step XML with mismatched tags.","solutions":["Open the .ktr in Spoon to see the detailed wrapped cause and offending step.","Restore the transformation from version control/backup.","Validate the XML well-formedness (xmllint) and repair the HTTPPOST step node.","Recreate the HTTP POST step in a clean transformation and re-enter its settings.","Align PDI versions — load with a version compatible with the file."],"exampleFix":"// before (broken XML in .ktr)\n<result><name>response</name></fields>\n// after\n<result><name>response</name><code>response_code</code></result>","handlingStrategy":"try-catch","validationCode":"Document doc = XMLHandler.loadXMLFile(new File(\"trans.ktr\"));","typeGuard":null,"tryCatchPattern":"try {\n  meta.loadXML(stepNode, databases, metaStore);\n} catch (KettleXMLException kxe) {\n  log.error(\"Read failed: \" + kxe.getCause(), kxe);\n  // restore from backup or recreate the step\n}","preventionTips":["Edit .ktr via Spoon, not by hand","Keep transformations in version control","Match PDI versions between authoring and runtime"],"tags":["xml","serialization","pentaho-metadata","ktr"],"backgroundTag":"json-parse-error","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}