You need to sign in to do that
Don't have an account?
jawtech
httprequest - large url's
Hi there, I am making a large GET httprequest to an external REST service. The amount of output data to be streamed is about 10000 characters. I can paste the URL in my browser address and I get the response just fine. However using httprequest in apex causes the destination server to say partial URL. Is there no way to stream data in 5000 chunks for example in Apex? Say something similar to this jsp page? the apex httprequest object doesn't seem to have much functions for streaming
HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setDoOutput(true); con.setRequestMethod(request.getMethod()); int clength = request.getContentLength(); if (clength > 0) { con.setDoInput(true); InputStream istream = request.getInputStream(); OutputStream os = con.getOutputStream(); final int length = 5000; byte[] bytes = new byte[length]; int bytesRead = 0; while ((bytesRead = istream.read(bytes, 0, length)) > 0) { os.write(bytes, 0, bytesRead); } } out.clear(); out = pageContext.pushBody(); OutputStream ostream = response.getOutputStream(); // Return content type String contentType = con.getContentType(); response.setContentType(contentType); // Override content types with known issues if (contentType != null) { for (int i = 0; i < contentTypesToMapToXml.length; i++) { if (contentType.indexOf(contentTypesToMapToXml[i]) >= 0) { response.setContentType("application/xml"); break; } } } InputStream in = con.getInputStream(); final int length = 5000; byte[] bytes = new byte[length]; int bytesRead = 0; while ((bytesRead = in.read(bytes, 0, length)) > 0) { ostream.write(bytes, 0, bytesRead); }
Upon recommendation of SF 3rd Tier, I have created an enhancement request on Ideas to have SF handle this.
https://sites.secure.force.com/ideaexchange/ideaView?id=08730000000IcS1AAK