{"record":{"id":"4e0727c82eedc420","repo":"pentaho/pentaho-kettle","slug":"http-exception-errorfindingfield","errorCode":"HTTP.Exception.ErrorFindingField","errorMessage":"HTTP.Exception.ErrorFindingField","messagePattern":"HTTP\\.Exception\\.ErrorFindingField","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/http/HTTP.java","lineNumber":312,"sourceCode":"      data.outputRowMeta = getInputRowMeta().clone();\n      data.inputRowMeta = getInputRowMeta();\n      meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n        metaStore );\n\n      if ( meta.isUrlInField() ) {\n        if ( Utils.isEmpty( meta.getUrlField() ) ) {\n          logError( BaseMessages.getString( PKG, \"HTTP.Log.NoField\" ) );\n          throw new KettleException( BaseMessages.getString( PKG, \"HTTP.Log.NoField\" ) );\n        }\n\n        // cache the position of the field\n        if ( data.indexOfUrlField < 0 ) {\n          String realUrlfieldName = environmentSubstitute( meta.getUrlField() );\n          data.indexOfUrlField = getInputRowMeta().indexOfValue( realUrlfieldName );\n          if ( data.indexOfUrlField < 0 ) {\n            // The field is unreachable !\n            logError( BaseMessages.getString( PKG, \"HTTP.Log.ErrorFindingField\", realUrlfieldName ) );\n            throw new KettleException( BaseMessages.getString( PKG, \"HTTP.Exception.ErrorFindingField\",\n              realUrlfieldName ) );\n          }\n        }\n      } else {\n        data.realUrl = environmentSubstitute( meta.getUrl() );\n      }\n\n      // check for headers\n      int nrHeaders = meta.getHeaderField().length;\n      if ( nrHeaders > 0 ) {\n        data.useHeaderParameters = true;\n      }\n\n      data.header_parameters_nrs = new int[ nrHeaders ];\n      data.headerParameters = new NameValuePair[ nrHeaders ];\n\n      // get the headers\n      for ( int i = 0; i < nrHeaders; i++ ) {","sourceCodeStart":294,"sourceCodeEnd":330,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/http/HTTP.java#L294-L330","documentation":"The HTTP step looks up the configured URL field name in the incoming row metadata, and the field does not exist in the input stream. processRow logs 'HTTP.Log.ErrorFindingField' and throws KettleException 'HTTP.Exception.ErrorFindingField' with the field name.","triggerScenarios":"data.indexOfUrlField remains < 0 after getInputRowMeta().indexOfValue(realUrlfieldName) — the 'URL field name' configured in the step matches no column in the incoming row stream.","commonSituations":"Upstream step renamed or removed the URL column; case mismatch in field name; wrong transformation wiring so a different stream reaches the HTTP step; variable substitution changing the expected field name.","solutions":["Check the exact field name in the step dialog against the output fields of the previous step (use 'Show input fields').","Fix the upstream step (Select values / rename) so the URL field exists with the exact name.","Correct case-sensitive spelling of the field name.","Reconnect the hop to the intended source stream."],"exampleFix":"// before\nmeta.setUrlField( \"Url\" ); // input stream has column 'url'\n// after\nmeta.setUrlField( \"url\" ); // exact match with upstream field name","handlingStrategy":"validation","validationCode":"// before executing the step, confirm the field exists in the input metadata\nif ( meta.isUrlInField() && inputRowMeta.indexOfValue( environmentSubstitute( meta.getUrlField() ) ) < 0 ) {\n  throw new IllegalArgumentException( \"URL field not found in input: \" + meta.getUrlField() );\n}","typeGuard":null,"tryCatchPattern":"try { processRow(); } catch ( KettleException e ) { if ( e.getMessage().contains( \"ErrorFindingField\" ) ) { logError( \"Fix field mapping in HTTP step: \" + e.getMessage() ); } throw e; }","preventionTips":["Use Spoon's field preview on the previous step to confirm exact field names","Avoid renaming upstream fields without updating downstream HTTP step settings","Keep field names case-consistent across the transformation"],"tags":["kettle","field-lookup","configuration"],"backgroundTag":"record-not-found","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"}