Sidebar

How do I download a PDF file via HTTP?

+1 vote
675 views
asked Jul 3, 2013 by ron-s-6919 (4,480 points)

If I have been given a URL, how can I download that file and replace my current message with the result?

2 Answers

+2 votes
 
Best answer

You can also use the qie.callRESTWebService() using the returnFullHttpResponse parameter as follows:

var urlTemplate = 'http://upload.wikimedia.org/wikipedia/en/a/a9/Example.jpg';

var parameterMap = qie.newParameterMap();
 
var responseRaw = qie.callRESTWebService("REST WS",
urlTemplate,
"GET",
null,
null,
parameterMap,
60000,
true);
 
var responseXML = qie.parseXMLString(responseRaw);
var base64Image = responseXML.getNode('/httpResponse/content');
var imageBytes = qie.base64DecodeToBytes(base64Image);
message = qie.createTextMessage(new java.lang.String(imageBytes, 'ISO-8859-1'));
 
answered Jan 28, 2016 by ron-s-6919 (4,480 points)
selected Feb 4, 2016 by ron-s-6919
+2 votes

You can download a PDF by using the following code in a custom mapping function:

// create HttpGet object
var request = new org.apache.http.client.methods.HttpGet(message.getNode('/').replaceAll(' ', '%20'));
   
try {
   // download
   var response = com.qvera.qie.utils.HttpClientUtils.getHttpClient('', '', 10000).execute(request);
   var entity = response.getEntity();
   if (entity !== null) {
      var stream = entity.getContent();
      try {
         var output = new java.io.ByteArrayOutputStream();
         var ch = stream.read();
         while (ch > -1) {
            output.write(ch);
            ch = stream.read();
         }
         message.setNode('/', output.toString('ISO-8859-1'));
      } finally {
         stream.close();
      }
   }
} finally {
   request.abort();
}
answered Jul 3, 2013 by ron-s-6919 (4,480 points)
...