Как решить «Импортированный класс» org.apache.http.HttpResponse «не удалось загрузить» в Пентахо, используя Java определенный пользователем класс - PullRequest
0 голосов
/ 09 апреля 2019

Я должен отправить файл PDF в API с помощью Pentaho.Я использовал «Пользовательский класс Java», чтобы получить файл PDF и отправить его в API.Все это делается с помощью метода HttpPost и multipart как Content_Type.Но я получаю сообщение об ошибке « Импортированный класс» org.apache.http.HttpResponse «Не удалось загрузить ».До этого я также получал сообщение об ошибке httpClient, но когда я копировал файлы jar httpclient в Pentaho / Java / lib / ext, это было исправлено.Теперь я нигде не могу найти httpResponse jar-файлы.

Пожалуйста, помогите ...

Спасибо

import java.io.File;

import org.apache.http.HttpResponse;     // This line Produces error

import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.*;
import org.apache.http.impl.client.HttpClients;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
 Object[] r = getRow();

    if (r == null) {
        setOutputDone();
        return false;
    }

 r = createOutputRow(r, data.outputRowMeta.size());

  // Get the value from url
    String urlString = get(Fields.In, "url").getString(r);
 // Get the file name 
 String longFileNameString = get(Fields.In, "filename").getString(r);
 // Load the file
 File file = new File(attachmentFilePath);

 HttpPost post = new HttpPost(urlString);
 MultipartEntityBuilder entity = MultipartEntityBuilder.create();
 entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
 entity.addBinaryBody("file", file);
 entity.addTextBody("fileName", file.getName());
 post.setEntity(entity.build());

 HttpClient httpClient = HttpClients.createDefault();

 try{ 
  //Make HTTP Call 
  HttpResponse response = httpClient.execute(post);
  // Check if response code is as expected
  if (response.getStatusLine().getStatusCode() != 200) {
   putError(data.outputRowMeta, r, 1, "Error returned", "HTTP Status Code", "HTTP Status: " + response.getStatusLine().getStatusCode());
   return true;
  } 
  // Set value of HTTP Status, integer values need conversion
  get(Fields.Out, "http_status").setValue(r,  Long.valueOf(response.getStatusLine().getStatusCode()));
 } catch (Exception e) {
  // Set value of HTTP Status to -1 since HTTP Post caused exception
  get(Fields.Out, "http_status").setValue(r,  Long.valueOf(-1));
  return true;
 }

 // Send the row on to the next step.
    putRow(data.outputRowMeta, r);

 return true;
}

...