pentaho/pentaho-kettle · error · KettleException
HTTPPOST.Exception.ErrorFindingField
Error message
HTTPPOST.Exception.ErrorFindingField
What it means
Thrown when 'URL is in a field?' is enabled and the configured URL field name cannot be found in the incoming row. data.inputRowMeta.indexOfValue() returns -1, so processRow raises a KettleException with 'HTTPPOST.Exception.ErrorFindingField' naming the field.
Solutions
- Verify the incoming row layout (right-click the hop / 'Show input fields') and set 'URL field name' to an existing field.
- Correct the field name casing — lookups are exact matches.
- Reconnect/reorder upstream steps so the field actually reaches the HTTP POST step.
- Use Fieldname selection from the dropdown in the step dialog rather than typing the name.
Example fix
// before urlField="url_adress"; // typo, field does not exist // after urlField="url_address"; // matches the actual incoming field name
Defensive patterns
Strategy: validation
Validate before calling
RowMetaInterface in = transMeta.getPrevStepFields(stepName);
if (in.indexOfValue(meta.getUrlField()) < 0)
throw new KettleException("URL field not in stream: " + meta.getUrlField()); Prevention
- Preview upstream rows before configuring the step
- Update dependent steps when renaming fields upstream
When it happens
Trigger: processRow executes with isUrlInField true; environmentSubstitute(meta.getUrlField()) resolved, but indexOfValue on the input row meta returns < 0 at line 379.
Common situations: Upstream step renamed or removed the URL column; field name case mismatch; environment variable substitution changed the expected name; step connected to a different stream than designed.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- HTTPPOST.Exception.CouldnotFindField
- HTTPPOST.Exception.CouldnotFindRequestEntityField
- HTTPPOST.Log.NoField
- AddSequence.Exception.NoSpecifiedMethod
- AutoDoc.Exception.FilenameFieldNotFound
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/6f52d79ead71aa5a.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/httppost/HTTPPOST.java:379
data.inputRowMeta = getInputRowMeta();
data.outputRowMeta = getInputRowMeta().clone();
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
if ( meta.isUrlInField() ) {
if ( Utils.isEmpty( meta.getUrlField() ) ) {
logError( BaseMessages.getString( PKG, "HTTPPOST.Log.NoField" ) );
throw new KettleException( BaseMessages.getString( PKG, "HTTPPOST.Log.NoField" ) );
}
// cache the position of the field
if ( data.indexOfUrlField < 0 ) {
String realUrlfieldName = environmentSubstitute( meta.getUrlField() );
data.indexOfUrlField = data.inputRowMeta.indexOfValue( ( realUrlfieldName ) );
if ( data.indexOfUrlField < 0 ) {
// The field is unreachable !
logError( BaseMessages.getString( PKG, "HTTPPOST.Log.ErrorFindingField", realUrlfieldName ) );
throw new KettleException( BaseMessages.getString( PKG, "HTTPPOST.Exception.ErrorFindingField",
realUrlfieldName ) );
}
}
} else {
data.realUrl = environmentSubstitute( meta.getUrl() );
}
// set body parameters
int nrargs = meta.getArgumentField().length;
if ( nrargs > 0 ) {
data.useBodyParameters = false;
data.useHeaderParameters = false;
data.contentTypeHeaderOverwrite = false;
int nrheader = 0;
int nrbody = 0;
for ( int i = 0; i < nrargs; i++ ) { // split into body / header
if ( meta.getArgumentHeader()[ i ] ) {
data.useHeaderParameters = true; // at least one header parameter
nrheader++;View on GitHub (pinned to f3058517a1)