Java Mulipart呼叫的Jersey客户端
我正在使用Java Mulipart呼叫的Jersey客户端,java,rest,multipart,jersey-client,Java,Rest,Multipart,Jersey Client,我正在使用jerseyclient对API进行REST调用,该API在mulipart中返回Json和PDF文件,作为响应的第一部分和第二部分 final Client client = ClientBuilder.newClient(); final WebTarget target = client.target(endPoint); final Builder request = target.request().header("Authorization", auth
jersey
client对API进行REST调用,该API在mulipart中返回Json和PDF文件,作为响应的第一部分和第二部分
final Client client = ClientBuilder.newClient();
final WebTarget target = client.target(endPoint);
final Builder request = target.request().header("Authorization", authKey);
final Response response = request.get();
final String readEntity = response.readEntity(String.class);
这将以字节码格式返回PDF文件的字符串响应。
我试图将实体读取为多部分类,然后出现异常:
未找到媒体类型=多部分/表单数据的消息正文读取器;边界=----#####和
客户端上的getMediaType()调用返回多部分/表单数据;边界=----#####
使用上述客户端解析此多部分响应的正确方法是什么?我希望下面的代码能够帮助您
Client client = Client.create();
client.addFilter(new HTTPBasicAuthFilter(username,password ))
WebResource webResource = client.resource("URL");
ClientResponse response = webResource.accept("*/*").type(MediaType.APPLICATION_OCTET_STREAM).get(ClientResponse.class);
Assert.assertEquals(response.getStatus(), 200);
MultivaluedMap<String, String> headers = response.getHeaders();
System.out.println("Content-Disposition :" + headers.get("Content-Disposition"));
List<String> filename=headers.get("Content-Disposition");
file_name=filename.get(0);
file_name=file_name.substring(file_name.indexOf("\"")+1,file_name.lastIndexOf("\""));
File file=new File(file_name);
if(!file.exists()) {
file.createNewFile();
}
InputStream inputStream=response.getEntityInputStream();
FileOutputStream fileStream =
new FileOutputStream(file);
IOUtils.copy(inputStream, fileStream);
fileStream.flush();
fileStream.close();
Assert.assertTrue(file.length()>0);
//Deleting the backup file
file.delete();
Client=Client.create();
addFilter(新的HTTPBasicAuthFilter(用户名、密码))
WebResource=client.resource(“URL”);
ClientResponse response=webResource.accept(“*/*”).type(MediaType.APPLICATION\u OCTET\u STREAM.get(ClientResponse.class);
Assert.assertEquals(response.getStatus(),200);
多值Map headers=response.getHeaders();
System.out.println(“内容处置:”+headers.get(“内容处置”);
列表文件名=headers.get(“内容处置”);
file_name=filename.get(0);
file\u name=file\u name.substring(file\u name.indexOf(“\”)+1,file\u name.lastIndexOf(“\”);
文件=新文件(文件名);
如果(!file.exists()){
createNewFile();
}
InputStream InputStream=response.getEntityInputStream();
FileOutputStream文件流=
新文件输出流(文件);
复制(inputStream、fileStream);
flush();
fileStream.close();
Assert.assertTrue(file.length()>0);
//删除备份文件
delete();
我希望下面的代码能帮助您
Client client = Client.create();
client.addFilter(new HTTPBasicAuthFilter(username,password ))
WebResource webResource = client.resource("URL");
ClientResponse response = webResource.accept("*/*").type(MediaType.APPLICATION_OCTET_STREAM).get(ClientResponse.class);
Assert.assertEquals(response.getStatus(), 200);
MultivaluedMap<String, String> headers = response.getHeaders();
System.out.println("Content-Disposition :" + headers.get("Content-Disposition"));
List<String> filename=headers.get("Content-Disposition");
file_name=filename.get(0);
file_name=file_name.substring(file_name.indexOf("\"")+1,file_name.lastIndexOf("\""));
File file=new File(file_name);
if(!file.exists()) {
file.createNewFile();
}
InputStream inputStream=response.getEntityInputStream();
FileOutputStream fileStream =
new FileOutputStream(file);
IOUtils.copy(inputStream, fileStream);
fileStream.flush();
fileStream.close();
Assert.assertTrue(file.length()>0);
//Deleting the backup file
file.delete();
Client=Client.create();
addFilter(新的HTTPBasicAuthFilter(用户名、密码))
WebResource=client.resource(“URL”);
ClientResponse response=webResource.accept(“*/*”).type(MediaType.APPLICATION\u OCTET\u STREAM.get(ClientResponse.class);
Assert.assertEquals(response.getStatus(),200);
多值Map headers=response.getHeaders();
System.out.println(“内容处置:”+headers.get(“内容处置”);
列表文件名=headers.get(“内容处置”);
file_name=filename.get(0);
file\u name=file\u name.substring(file\u name.indexOf(“\”)+1,file\u name.lastIndexOf(“\”);
文件=新文件(文件名);
如果(!file.exists()){
createNewFile();
}
InputStream InputStream=response.getEntityInputStream();
FileOutputStream文件流=
新文件输出流(文件);
复制(inputStream、fileStream);
flush();
fileStream.close();
Assert.assertTrue(file.length()>0);
//删除备份文件
delete();
快速的谷歌搜索会给出结果。您必须启用MultiPartFeature
,并执行response.readEntity(InputStream.class)
从中获取以下代码
快速的谷歌搜索会给你结果。您必须启用
MultiPartFeature
,并执行response.readEntity(InputStream.class)
从中获取以下代码
webResource的数据类型是什么?webResource的数据类型是什么?因为我的响应中有一个Json后跟一个PDF,client.property中的数据应该是什么?它将是API的
@生成的任何内容。您可以忽略ITA,因为我的响应中有一个Json后跟一个PDF,client.property中的数据应该是什么?它将是API的@生成的任何内容。你可以忽略它