I am new to both pentaho and web service. I need to do a PutMethod call to Pentaho with HTTPClient and update a MetaData file to it's repository. I am able to get the file using GetMethod but when i am calling the PutMethod it is giving me (HTTP Status 405 - Method Not Allowed)
My code is as follows
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PutMethod;
public void PutRequest(String context, String data, String filePath, String userName, String tenantName) {
File file = new File(filePath);
urlParams = GenerateParam(userName, tenantName);
try {
logger.debug("PUT : " + url.toExternalForm() + "/" + context + "/" + data + urlParams);
logger.debug("File Path :: " + file.getAbsolutePath());
PutMethod putMethod = new PutMethod(url.toExternalForm() + "/" + context + "/" + data + urlParams);
putMethod.setDoAuthentication(true);
Part[] parts = { new StringPart("domainId", data), new StringPart("overwrite", "true"),
new FilePart("metadataFile", file, "application/octect-stream", "utf-8") };
putMethod.setRequestEntity(new MultipartRequestEntity(parts, putMethod.getParams()));
int status = client.executeMethod(putMethod);
logger.debug("PUT status : " + status);
logger.debug("Response : " + putMethod.getResponseBodyAsString());
logger.debug("File : " + file.getName());
putMethod.releaseConnection();
// file.delete();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Please let me know what is wrong with this code.
My code is as follows
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PutMethod;
public void PutRequest(String context, String data, String filePath, String userName, String tenantName) {
File file = new File(filePath);
urlParams = GenerateParam(userName, tenantName);
try {
logger.debug("PUT : " + url.toExternalForm() + "/" + context + "/" + data + urlParams);
logger.debug("File Path :: " + file.getAbsolutePath());
PutMethod putMethod = new PutMethod(url.toExternalForm() + "/" + context + "/" + data + urlParams);
putMethod.setDoAuthentication(true);
Part[] parts = { new StringPart("domainId", data), new StringPart("overwrite", "true"),
new FilePart("metadataFile", file, "application/octect-stream", "utf-8") };
putMethod.setRequestEntity(new MultipartRequestEntity(parts, putMethod.getParams()));
int status = client.executeMethod(putMethod);
logger.debug("PUT status : " + status);
logger.debug("Response : " + putMethod.getResponseBodyAsString());
logger.debug("File : " + file.getName());
putMethod.releaseConnection();
// file.delete();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Please let me know what is wrong with this code.