我有一个文件ABC(输入流),需要通过Jersey Java Rest Server从Android App上传。我能够单独发送文件,但我有jsonObj(对象转换为json)和文件。
我正在尝试将inputstream转换为json String,然后将其插入到jsonObj中。但没有运气。请指导我解决这个问题的方法。
更新[1]
Java客户端:
使用JSONObject
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
JSONObject json = new JSONObject();
json.put("id", "1213");
json.put("name", "3");
json.put("date", "2013-12-09");
String input = new String( json.toString());
ClientResponse response = service.path("/insert/").type(MediaType.APPLICATION_JSON).
post(ClientResponse.class,input);
String fileName="D://workspaces/src/readMe.pdf";
InputStream fileInStream = new FileInputStream(fileName);
ClientResponse response = service.path("/uploadFile").type(MediaType.APPLICATION_OCTET_STREAM)
.post(ClientResponse.class, fileInStream);
我希望服务器代码不需要。
现在这个工作完美,但我想要他们在一起,我猜输入流可以与JSONObject合并,问题是如何?有些人说杰克逊,但我需要Android应用程序上的这个客户端代码,我无法负担额外的库。
答案 0 :(得分:0)
为什么你买不起额外的库?杰克逊对此非常好,或者是Gson。
顺便说一下,您可以尝试以下方法:
InputStream inputStream = null;
String result = null;
try {
InputStream fileInStream = new FileInputStream(fileName);
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(fileInStream , "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
result = sb.toString();
} catch (Exception e) {
// handling
}
finally {
try{
if(inputStream != null){
inputStream.close();}
catch(Exception exc){}
}