用Java实现HTTP Multipart的服务端和客户端
今天简单介绍一下如何用Java支持HTTP Multipart的request和response。 整个项目的代码可以在https://github.com/mcai4gl2/multi下载。
在这个程序里,我们的业务场景很简单。在服务端有一个随机数生成器,可以生成随机的Integer和Guid,客户端通过服务,可以请求一个或多个随机数。同时,客户端可以向服务端发送一个或多个随机数,这些随机数会被加入到一个队列中,被其他的客户端通过请求获得。以下是我们的随机数Bean的定义:
@Override public RandNumber[] getRandomNumbers(int num) { HttpGet httpGet = new HttpGet(getMultipleUrl); httpGet.setHeader("MAX_NUM_NUMS", Integer.toString(num)); try { HttpResponse httpResponse = httpClient.execute(httpGet); if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { ByteArrayDataSource source = new ByteArrayDataSource(httpResponse.getEntity().getContent(), "multipart/mixed"); MimeMultipart multipart = new MimeMultipart(source); List<RandNumber> numbers = new ArrayList<RandNumber>(); for (int index = 0; index < multipart.getCount(); index++) { numbers.add(randomNumberSerializer.deserializeRandomNumber(multipart.getBodyPart(index).getInputStream())); } return numbers.toArray(new RandNumber[numbers.size()]); } else { HttpEntity httpDataEntity = httpResponse.getEntity(); EntityUtils.consumeQuietly(httpDataEntity); return null; } } catch (Exception ex) { log.error("Failed to get multiple random numbers", ex); return null; } }这些基本的配置,可以大大提高我们编程调试的效率。这也是我写这篇文章的另一个原因。希望这些配置,可以帮到有需要的朋友。