// This script looks to see if the response code was 302 // if so, it resets the target of the next message // to use the host name and service path specified by the Location header // Get the Message that immediately precedes this Script. var msg = $context.currentItem.previousItem; var origText = msg.getResponse(msg.RESPONSE_TEXT); //from the response, determine if this a 302 response var pos = origText.indexOf("HTTP/1.1 302 Found"); if (pos == -1) { $context.result.postMessage($context.result.LEVEL_INFO, "did not find 302"); } else { //now get the value of the location header and then the protocol following var firstPos = origText.indexOf("Location: "); firstPos = origText.indexOf("http", firstPos + 1); var lastPos = origText.indexOf("\n", firstPos + 1); var location = origText.substring(firstPos, lastPos); //now we need to separate this into host name and service path var doubleSlashPos = location.indexOf("//"); firstSlashPos = location.indexOf("/", doubleSlashPos + 2); //extract out the host name and the service path from the location var hostName = location.substring(doubleSlashPos + 2, firstSlashPos); var servicePath = location.substring(firstSlashPos); //set the host name and service path for the target of the next message $context.currentItem.nextItem.target.systemPropertyList.setPropertyValue("HostName", hostName); $context.currentItem.nextItem.target.systemPropertyList.setPropertyValue("ServicePath", servicePath); }