List of usage examples for org.apache.http.entity.mime.content ByteArrayBody ByteArrayBody
public ByteArrayBody(final byte[] data, final String filename)
From source file:org.bonitasoft.engine.api.HTTPServerAPI.java
final HttpEntity buildEntity(final Map<String, Serializable> options, final List<String> classNameParameters, final Object[] parametersValues, final XStream xstream) throws UnsupportedEncodingException, IOException { final HttpEntity httpEntity; /*//from ww w .jav a 2 s.c o m * if we have a business archive we use multipart to have the business archive attached as a binary content (it can be big) */ if (classNameParameters.contains(BusinessArchive.class.getName()) || classNameParameters.contains(byte[].class.getName())) { final List<Object> bytearrayParameters = new ArrayList<Object>(); final MultipartEntity entity = new MultipartEntity(null, null, UTF8); entity.addPart(OPTIONS, new StringBody(toXML(options, xstream), UTF8)); entity.addPart(CLASS_NAME_PARAMETERS, new StringBody(toXML(classNameParameters, xstream), UTF8)); for (int i = 0; i < parametersValues.length; i++) { final Object parameterValue = parametersValues[i]; if (parameterValue instanceof BusinessArchive || parameterValue instanceof byte[]) { parametersValues[i] = BYTE_ARRAY; bytearrayParameters.add(parameterValue); } } entity.addPart(PARAMETERS_VALUES, new StringBody(toXML(parametersValues, xstream), UTF8)); int i = 0; for (final Object object : bytearrayParameters) { entity.addPart(BINARY_PARAMETER + i, new ByteArrayBody(serialize(object), BINARY_PARAMETER + i)); i++; } httpEntity = entity; } else { final List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair(OPTIONS, toXML(options, xstream))); nvps.add(new BasicNameValuePair(CLASS_NAME_PARAMETERS, toXML(classNameParameters, xstream))); nvps.add(new BasicNameValuePair(PARAMETERS_VALUES, toXML(parametersValues, xstream))); httpEntity = new UrlEncodedFormEntity(nvps, UTF_8); } return httpEntity; }
From source file:com.serphacker.serposcope.scraper.http.ScrapClientIT.java
@Test public void testPostMultipart() throws Exception { try (ScrapClient cli = new ScrapClient()) { Map<String, Object> data = new HashMap<>(); data.put("key1", "value1"); data.put("key2", "value2"); data.put("key3", "value3"); data.put("filename", new ByteArrayBody("file-content".getBytes(), "filename")); assertEquals(200, cli.post("http://httpbin.org/post", data, ScrapClient.PostType.MULTIPART)); HashMap<String, Object> content = new ObjectMapper().readValue(cli.getContentAsString(), new TypeReference<HashMap<String, Object>>() { });//from w w w . j a va 2s .c o m String contentType = (String) ((Map) content.get("headers")).get("Content-Type"); assertTrue(contentType.contains("multipart/form-data;")); assertTrue(contentType.contains("; charset=UTF-8")); Map<String, String> postContent = (Map) content.get("form"); assertEquals(3, postContent.size()); Map<String, String> fileContent = (Map) content.get("files"); assertEquals(1, fileContent.size()); String contentRaw = cli.getContentAsString(); assertTrue(contentRaw.contains("\"key1\": \"value1\\u00e9\"")); assertTrue(contentRaw.contains("\"key2\": \"value2\\u00e9\"")); assertTrue(contentRaw.contains("\"key3\": \"value3\\u00e9\"")); assertTrue(contentRaw.contains("\"filename\": \"file-content\"")); } }
From source file:nya.miku.wishmaster.chans.cirno.MikubaModule.java
@Override public String sendPost(SendPostModel model, ProgressListener listener, CancellableTask task) throws Exception { String body, video;/*from w w w . jav a2 s. c o m*/ Matcher ytLink = YOUTUBE_PATTERN.matcher(model.comment); if (ytLink.find()) { body = new StringBuilder(model.comment).delete(ytLink.start(), ytLink.end()).toString(); video = "http://www.youtube.com/watch?v=" + ytLink.group(1); } else { body = model.comment; video = ""; } String url = (useHttps() ? "https://" : "http://") + MIKUBA_DOMAIN + "/reply/" + (model.threadNumber == null ? "0" : model.threadNumber); ExtendedMultipartBuilder postEntityBuilder = ExtendedMultipartBuilder.create().setDelegates(listener, task) .addString("title", model.subject).addString("captcha", model.captchaAnswer).addString("body", body) .addString("video", video).addString("email", ""); if (model.attachments != null && model.attachments.length > 0) postEntityBuilder.addFile("image", model.attachments[0], model.randomHash); else postEntityBuilder.addPart("image", new ByteArrayBody(new byte[0], "")); HttpRequestModel request = HttpRequestModel.builder().setPOST(postEntityBuilder.build()).setNoRedirect(true) .build(); HttpResponseModel response = null; try { response = HttpStreamer.getInstance().getFromUrl(url, request, httpClient, null, task); Logger.d(TAG, response.statusCode + " - " + response.statusReason); if (response.statusCode == 303) { return null; } else if (response.statusCode == 200) { ByteArrayOutputStream output = new ByteArrayOutputStream(1024); IOUtils.copyStream(response.stream, output); String htmlResponse = output.toString("UTF-8"); //Logger.d(TAG, htmlResponse); if (htmlResponse.contains("/static/captcha.gif")) { throw new Exception(" ?!"); } } else throw new Exception(response.statusCode + " - " + response.statusReason); } finally { if (response != null) response.release(); saveCookiesToPreferences(); } return null; }
From source file:com.serphacker.serposcope.scraper.http.ScrapClientIT.java
@Test public void testPostMultipartISO88591() throws Exception { try (ScrapClient cli = new ScrapClient()) { Map<String, Object> data = new HashMap<>(); data.put("key1", "value1"); data.put("key2", "value2"); data.put("key3", "value3"); data.put("filename", new ByteArrayBody("file-content".getBytes(), "filename")); assertEquals(200,//from ww w.jav a 2s.co m cli.post("http://httpbin.org/post", data, ScrapClient.PostType.MULTIPART, "iso-8859-1")); HashMap<String, Object> content = new ObjectMapper().readValue(cli.getContentAsString(), new TypeReference<HashMap<String, Object>>() { }); String contentType = (String) ((Map) content.get("headers")).get("Content-Type"); assertTrue(contentType.contains("multipart/form-data;")); assertTrue(contentType.contains("; charset=ISO-8859-1")); Map<String, String> postContent = (Map) content.get("form"); assertEquals(3, postContent.size()); Map<String, String> fileContent = (Map) content.get("files"); assertEquals(1, fileContent.size()); String contentRaw = cli.getContentAsString(); assertTrue(contentRaw.contains("\"key1\": \"value1\\ufffd\"")); assertTrue(contentRaw.contains("\"key2\": \"value2\\ufffd\"")); assertTrue(contentRaw.contains("\"key3\": \"value3\\ufffd\"")); assertTrue(contentRaw.contains("\"filename\": \"file-content\"")); } }
From source file:be.cytomine.client.Cytomine.java
public void uploadFile(String url, byte[] data) throws CytomineException { try {//from w ww . ja v a2 s . c o m HttpClient client = null; MultipartEntity entity = new MultipartEntity(); entity.addPart("files[]", new ByteArrayBody(data, new Date().getTime() + "file")); client = new HttpClient(publicKey, privateKey, getHost()); client.authorize("POST", url, entity.getContentType().getValue(), "application/json,*/*"); client.connect(getHost() + url); int code = client.post(entity); String response = client.getResponseData(); log.debug("response=" + response); client.disconnect(); JSONObject json = createJSONResponse(code, response); } catch (IOException e) { throw new CytomineException(e); } }
From source file:org.wisdom.framework.vertx.FileUploadTest.java
@Test public void testThatFileUpdateFailedWhenTheFileExceedTheConfiguredSize() throws InterruptedException, IOException { // Prepare the configuration ApplicationConfiguration configuration = mock(ApplicationConfiguration.class); when(configuration.getIntegerWithDefault(eq("vertx.http.port"), anyInt())).thenReturn(0); when(configuration.getIntegerWithDefault(eq("vertx.https.port"), anyInt())).thenReturn(-1); when(configuration.getIntegerWithDefault("vertx.acceptBacklog", -1)).thenReturn(-1); when(configuration.getIntegerWithDefault("vertx.receiveBufferSize", -1)).thenReturn(-1); when(configuration.getIntegerWithDefault("vertx.sendBufferSize", -1)).thenReturn(-1); when(configuration.getLongWithDefault("http.upload.disk.threshold", DiskFileUpload.MINSIZE)) .thenReturn(DiskFileUpload.MINSIZE); when(configuration.getLongWithDefault("http.upload.max", -1l)).thenReturn(10l); // 10 bytes max when(configuration.getStringArray("wisdom.websocket.subprotocols")).thenReturn(new String[0]); when(configuration.getStringArray("vertx.websocket-subprotocols")).thenReturn(new String[0]); // Prepare the router with a controller Controller controller = new DefaultController() { @SuppressWarnings("unused") public Result index() { return ok(); }/*from w w w. j a v a 2 s. c o m*/ }; Router router = mock(Router.class); Route route = new RouteBuilder().route(HttpMethod.POST).on("/").to(controller, "index"); when(router.getRouteFor(anyString(), anyString(), any(Request.class))).thenReturn(route); ContentEngine contentEngine = getMockContentEngine(); // Configure the server. server = new WisdomVertxServer(); server.accessor = new ServiceAccessor(null, configuration, router, contentEngine, executor, null, Collections.<ExceptionMapper>emptyList()); server.configuration = configuration; server.vertx = vertx; server.start(); VertxHttpServerTest.waitForStart(server); int port = server.httpPort(); CloseableHttpClient httpclient = HttpClients.createDefault(); HttpPost post = new HttpPost("http://localhost:" + port + "/?id=" + 1); ByteArrayBody body = new ByteArrayBody("this is too much...".getBytes(), "my-file.dat"); StringBody description = new StringBody("my description", ContentType.TEXT_PLAIN); HttpEntity entity = MultipartEntityBuilder.create().addPart("upload", body).addPart("comment", description) .build(); post.setEntity(entity); CloseableHttpResponse response = httpclient.execute(post); // We should receive a Payload too large response (413) assertThat(response.getStatusLine().getStatusCode()).isEqualTo(413); }
From source file:com.portfolio.data.attachment.XSLService.java
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { /**/*from ww w .ja v a2s.c o m*/ * Format demand: * <convert> * <portfolioid>{uuid}</portfolioid> * <portfolioid>{uuid}</portfolioid> * <nodeid>{uuid}</nodeid> * <nodeid>{uuid}</nodeid> * <documentid>{uuid}</documentid> * <xsl>{rpertoire}{fichier}</xsl> * <format>[pdf rtf xml ...]</format> * <parameters> * <maVar1>lala</maVar1> * ... * </parameters> * </convert> */ try { //On initialise le dataProvider Connection c = null; //On initialise le dataProvider if (ds == null) // Case where we can't deploy context.xml { c = getConnection(); } else { c = ds.getConnection(); } dataProvider.setConnection(c); credential = new Credential(c); } catch (Exception e) { e.printStackTrace(); } String origin = request.getRequestURL().toString(); /// Variable stuff int userId = 0; int groupId = 0; String user = ""; HttpSession session = request.getSession(true); if (session != null) { Integer val = (Integer) session.getAttribute("uid"); if (val != null) userId = val; val = (Integer) session.getAttribute("gid"); if (val != null) groupId = val; user = (String) session.getAttribute("user"); } /// TODO: A voire si un form get ne ferait pas l'affaire aussi /// On lis le xml /* BufferedReader rd = new BufferedReader(new InputStreamReader(request.getInputStream())); StringBuilder sb = new StringBuilder(); String line; while( (line = rd.readLine()) != null ) sb.append(line); DocumentBuilderFactory documentBuilderFactory =DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = null; Document doc=null; try { documentBuilder = documentBuilderFactory.newDocumentBuilder(); doc = documentBuilder.parse(new ByteArrayInputStream(sb.toString().getBytes("UTF-8"))); } catch( Exception e ) { e.printStackTrace(); } /// On lit les paramtres NodeList portfolioNode = doc.getElementsByTagName("portfolioid"); NodeList nodeNode = doc.getElementsByTagName("nodeid"); NodeList documentNode = doc.getElementsByTagName("documentid"); NodeList xslNode = doc.getElementsByTagName("xsl"); NodeList formatNode = doc.getElementsByTagName("format"); NodeList parametersNode = doc.getElementsByTagName("parameters"); //*/ // String xslfile = xslNode.item(0).getTextContent(); String xslfile = request.getParameter("xsl"); String format = request.getParameter("format"); // String format = formatNode.item(0).getTextContent(); String parameters = request.getParameter("parameters"); String documentid = request.getParameter("documentid"); String portfolios = request.getParameter("portfolioids"); String[] portfolioid = null; if (portfolios != null) portfolioid = portfolios.split(";"); String nodes = request.getParameter("nodeids"); String[] nodeid = null; if (nodes != null) nodeid = nodes.split(";"); System.out.println("PARAMETERS: "); System.out.println("xsl: " + xslfile); System.out.println("format: " + format); System.out.println("user: " + userId); System.out.println("portfolioids: " + portfolios); System.out.println("nodeids: " + nodes); System.out.println("parameters: " + parameters); boolean redirectDoc = false; if (documentid != null) { redirectDoc = true; System.out.println("documentid @ " + documentid); } boolean usefop = false; String ext = ""; if (MimeConstants.MIME_PDF.equals(format)) { usefop = true; ext = ".pdf"; } else if (MimeConstants.MIME_RTF.equals(format)) { usefop = true; ext = ".rtf"; } //// Paramtre portfolio-uuid et file-xsl // String uuid = request.getParameter("uuid"); // String xslfile = request.getParameter("xsl"); StringBuilder aggregate = new StringBuilder(); try { int portcount = 0; int nodecount = 0; // On aggrge les donnes if (portfolioid != null) { portcount = portfolioid.length; for (int i = 0; i < portfolioid.length; ++i) { String p = portfolioid[i]; String portfolioxml = dataProvider .getPortfolio(new MimeType("text/xml"), p, userId, groupId, "", null, null, 0) .toString(); aggregate.append(portfolioxml); } } if (nodeid != null) { nodecount = nodeid.length; for (int i = 0; i < nodeid.length; ++i) { String n = nodeid[i]; String nodexml = dataProvider.getNode(new MimeType("text/xml"), n, true, userId, groupId, "") .toString(); aggregate.append(nodexml); } } // Est-ce qu'on a eu besoin d'aggrger les donnes? String input = aggregate.toString(); String pattern = "<\\?xml[^>]*>"; // Purge previous xml declaration input = input.replaceAll(pattern, ""); input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<!DOCTYPE xsl:stylesheet [" + "<!ENTITY % lat1 PUBLIC \"-//W3C//ENTITIES Latin 1 for XHTML//EN\" \"" + servletDir + "xhtml-lat1.ent\">" + "<!ENTITY % symbol PUBLIC \"-//W3C//ENTITIES Symbols for XHTML//EN\" \"" + servletDir + "xhtml-symbol.ent\">" + "<!ENTITY % special PUBLIC \"-//W3C//ENTITIES Special for XHTML//EN\" \"" + servletDir + "xhtml-special.ent\">" + "%lat1;" + "%symbol;" + "%special;" + "]>" + // For the pesky special characters "<root>" + input + "</root>"; // System.out.println("INPUT WITH PROXY:"+ input); /// Rsolution des proxys DocumentBuilder documentBuilder; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilder = documentBuilderFactory.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(input)); Document doc = documentBuilder.parse(is); /// Proxy stuff XPath xPath = XPathFactory.newInstance().newXPath(); String filterRes = "//asmResource[@xsi_type='Proxy']"; String filterCode = "./code/text()"; NodeList nodelist = (NodeList) xPath.compile(filterRes).evaluate(doc, XPathConstants.NODESET); XPathExpression codeFilter = xPath.compile(filterCode); for (int i = 0; i < nodelist.getLength(); ++i) { Node res = nodelist.item(i); Node gp = res.getParentNode(); // resource -> context -> container Node ggp = gp.getParentNode(); Node uuid = (Node) codeFilter.evaluate(res, XPathConstants.NODE); /// Fetch node we want to replace String returnValue = dataProvider .getNode(new MimeType("text/xml"), uuid.getTextContent(), true, userId, groupId, "") .toString(); Document rep = documentBuilder.parse(new InputSource(new StringReader(returnValue))); Element repNode = rep.getDocumentElement(); Node proxyNode = repNode.getFirstChild(); proxyNode = doc.importNode(proxyNode, true); // adoptNode have some weird side effect. To be banned // doc.replaceChild(proxyNode, gp); ggp.insertBefore(proxyNode, gp); // replaceChild doesn't work. ggp.removeChild(gp); } try // Convert XML document to string { DOMSource domSource = new DOMSource(doc); StringWriter writer = new StringWriter(); StreamResult result = new StreamResult(writer); TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = tf.newTransformer(); transformer.transform(domSource, result); writer.flush(); input = writer.toString(); } catch (TransformerException ex) { ex.printStackTrace(); } // System.out.println("INPUT DATA:"+ input); // Setup a buffer to obtain the content length ByteArrayOutputStream stageout = new ByteArrayOutputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); //// Setup Transformer (1st stage) /// Base path String basepath = xslfile.substring(0, xslfile.indexOf(File.separator)); String firstStage = baseDir + File.separator + basepath + File.separator + "karuta" + File.separator + "xsl" + File.separator + "html2xml.xsl"; System.out.println("FIRST: " + firstStage); Source xsltSrc1 = new StreamSource(new File(firstStage)); Transformer transformer1 = transFactory.newTransformer(xsltSrc1); StreamSource stageSource = new StreamSource(new ByteArrayInputStream(input.getBytes())); Result stageRes = new StreamResult(stageout); transformer1.transform(stageSource, stageRes); // Setup Transformer (2nd stage) String secondStage = baseDir + File.separator + xslfile; Source xsltSrc2 = new StreamSource(new File(secondStage)); Transformer transformer2 = transFactory.newTransformer(xsltSrc2); // Configure parameter from xml String[] table = parameters.split(";"); for (int i = 0; i < table.length; ++i) { String line = table[i]; int var = line.indexOf(":"); String par = line.substring(0, var); String val = line.substring(var + 1); transformer2.setParameter(par, val); } // Setup input StreamSource xmlSource = new StreamSource(new ByteArrayInputStream(stageout.toString().getBytes())); // StreamSource xmlSource = new StreamSource(new File(baseDir+origin, "projectteam.xml") ); Result res = null; if (usefop) { /// FIXME: Might need to include the entity for html stuff? //Setup FOP //Make sure the XSL transformation's result is piped through to FOP Fop fop = fopFactory.newFop(format, out); res = new SAXResult(fop.getDefaultHandler()); //Start the transformation and rendering process transformer2.transform(xmlSource, res); } else { res = new StreamResult(out); //Start the transformation and rendering process transformer2.transform(xmlSource, res); } if (redirectDoc) { // /resources/resource/file/{uuid}[?size=[S|L]&lang=[fr|en]] String urlTarget = "http://" + server + "/resources/resource/file/" + documentid; System.out.println("Redirect @ " + urlTarget); HttpClientBuilder clientbuilder = HttpClientBuilder.create(); CloseableHttpClient client = clientbuilder.build(); HttpPost post = new HttpPost(urlTarget); post.addHeader("referer", origin); String sessionid = request.getSession().getId(); System.out.println("Session: " + sessionid); post.addHeader("Cookie", "JSESSIONID=" + sessionid); MultipartEntityBuilder builder = MultipartEntityBuilder.create(); builder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE); ByteArrayBody body = new ByteArrayBody(out.toByteArray(), "generated" + ext); builder.addPart("uploadfile", body); HttpEntity entity = builder.build(); post.setEntity(entity); HttpResponse ret = client.execute(post); String stringret = new BasicResponseHandler().handleResponse(ret); int code = ret.getStatusLine().getStatusCode(); response.setStatus(code); ServletOutputStream output = response.getOutputStream(); output.write(stringret.getBytes(), 0, stringret.length()); output.close(); client.close(); /* HttpURLConnection connection = CreateConnection( urlTarget, request ); /// Helping construct Json connection.setRequestProperty("referer", origin); /// Send post data ServletInputStream inputData = request.getInputStream(); DataOutputStream writer = new DataOutputStream(connection.getOutputStream()); byte[] buffer = new byte[1024]; int dataSize; while( (dataSize = inputData.read(buffer,0,buffer.length)) != -1 ) { writer.write(buffer, 0, dataSize); } inputData.close(); writer.close(); RetrieveAnswer(connection, response, origin); //*/ } else { response.reset(); response.setHeader("Content-Disposition", "attachment; filename=generated" + ext); response.setContentType(format); response.setContentLength(out.size()); response.getOutputStream().write(out.toByteArray()); response.getOutputStream().flush(); } } catch (Exception e) { String message = e.getMessage(); response.setStatus(500); response.getOutputStream().write(message.getBytes()); response.getOutputStream().close(); e.printStackTrace(); } finally { dataProvider.disconnect(); } }
From source file:nya.miku.wishmaster.api.AbstractVichanModule.java
@Override public String sendPost(SendPostModel model, ProgressListener listener, CancellableTask task) throws Exception { UrlPageModel urlModel = new UrlPageModel(); urlModel.chanName = getChanName();// w w w. j a v a 2s. c o m urlModel.boardName = model.boardName; if (model.threadNumber == null) { urlModel.type = UrlPageModel.TYPE_BOARDPAGE; urlModel.boardPage = UrlPageModel.DEFAULT_FIRST_PAGE; } else { urlModel.type = UrlPageModel.TYPE_THREADPAGE; urlModel.threadNumber = model.threadNumber; } String referer = buildUrl(urlModel); List<Pair<String, String>> fields = VichanAntiBot.getFormValues(referer, task, httpClient); if (task != null && task.isCancelled()) throw new Exception("interrupted"); ExtendedMultipartBuilder postEntityBuilder = ExtendedMultipartBuilder.create() .setCharset(Charset.forName("UTF-8")).setDelegates(listener, task); for (Pair<String, String> pair : fields) { if (pair.getKey().equals("spoiler") && !model.custommark) continue; String val; switch (pair.getKey()) { case "name": val = model.name; break; case "email": val = getSendPostEmail(model); break; case "subject": val = model.subject; break; case "body": val = model.comment; break; case "password": val = model.password; break; case "spoiler": val = "on"; break; default: val = pair.getValue(); } if (pair.getKey().equals("file")) { if (model.attachments != null && model.attachments.length > 0) { postEntityBuilder.addFile(pair.getKey(), model.attachments[0], model.randomHash); } else { postEntityBuilder.addPart(pair.getKey(), new ByteArrayBody(new byte[0], "")); } } else { postEntityBuilder.addString(pair.getKey(), val); } } String url = getUsingUrl() + "post.php"; Header[] customHeaders = new Header[] { new BasicHeader(HttpHeaders.REFERER, referer) }; HttpRequestModel request = HttpRequestModel.builder().setPOST(postEntityBuilder.build()) .setCustomHeaders(customHeaders).setNoRedirect(true).build(); HttpResponseModel response = null; try { response = HttpStreamer.getInstance().getFromUrl(url, request, httpClient, listener, task); if (response.statusCode == 200 || response.statusCode == 400) { ByteArrayOutputStream output = new ByteArrayOutputStream(1024); IOUtils.copyStream(response.stream, output); String htmlResponse = output.toString("UTF-8"); Matcher errorMatcher = ERROR_PATTERN.matcher(htmlResponse); if (errorMatcher.find()) throw new Exception(errorMatcher.group(1)); } else if (response.statusCode == 303) { for (Header header : response.headers) { if (header != null && HttpHeaders.LOCATION.equalsIgnoreCase(header.getName())) { return fixRelativeUrl(header.getValue()); } } } throw new Exception(response.statusCode + " - " + response.statusReason); } finally { if (response != null) response.release(); } }
From source file:org.votingsystem.util.HttpHelper.java
public ResponseVS sendObjectMap(Map<String, Object> fileMap, String serverURL) throws Exception { log.info("sendObjectMap - serverURL: " + serverURL); ResponseVS responseVS = null;// ww w. ja va 2s.c o m if (fileMap == null || fileMap.isEmpty()) throw new Exception(ContextVS.getInstance().getMessage("requestWithoutFileMapErrorMsg")); HttpPost httpPost = null; CloseableHttpResponse response = null; ContentTypeVS responseContentType = null; try { httpPost = new HttpPost(serverURL); Set<String> fileNames = fileMap.keySet(); MultipartEntity reqEntity = new MultipartEntity(); for (String objectName : fileNames) { Object objectToSend = fileMap.get(objectName); if (objectToSend instanceof File) { File file = (File) objectToSend; log.info("sendObjectMap - fileName: " + objectName + " - filePath: " + file.getAbsolutePath()); FileBody fileBody = new FileBody(file); reqEntity.addPart(objectName, fileBody); } else if (objectToSend instanceof byte[]) { byte[] byteArray = (byte[]) objectToSend; reqEntity.addPart(objectName, new ByteArrayBody(byteArray, objectName)); } } httpPost.setEntity(reqEntity); response = httpClient.execute(httpPost); Header header = response.getFirstHeader("Content-Type"); if (header != null) responseContentType = ContentTypeVS.getByName(header.getValue()); log.info("----------------------------------------"); log.info(response.getStatusLine().toString() + " - contentTypeVS: " + responseContentType + " - connManager stats: " + connManager.getTotalStats().toString()); log.info("----------------------------------------"); byte[] responseBytes = EntityUtils.toByteArray(response.getEntity()); responseVS = new ResponseVS(response.getStatusLine().getStatusCode(), responseBytes, responseContentType); EntityUtils.consume(response.getEntity()); } catch (Exception ex) { String statusLine = null; if (response != null) statusLine = response.getStatusLine().toString(); log.log(Level.SEVERE, ex.getMessage() + " - StatusLine: " + statusLine, ex); responseVS = new ResponseVS(ResponseVS.SC_ERROR, ex.getMessage()); if (httpPost != null) httpPost.abort(); } finally { try { if (response != null) response.close(); } catch (Exception ex) { log.log(Level.SEVERE, ex.getMessage(), ex); } return responseVS; } }
From source file:org.jkan997.slingbeans.slingfs.FileSystemServer.java
private ContentBody generateBinaryBody(String key, byte[] data) { String mimeType = MimeTypeHelper.BINARY; ByteArrayBody res = new ByteArrayBody(data, key); return res;/*from w w w .ja v a2 s . co m*/ }