gpt4 book ai didi

java - 如何编写客户端从Rest Web服务获取数据和图像文件

转载 作者:行者123 更新时间:2023-12-02 11:07:35 26 4
gpt4 key购买 nike

我编写了一个java REST Web服务,它接受我在 header 参数中发送的图像文件和json数据,所以我想知道如何编写一个客户端来成功调用该Web服务。我的问题是如何在 header 参数中传递图像文件和 json 数据来调用该 Web 服务。我如何在请求中设置图像。请找到下面我必须公开的其余网络服务的代码。

@Path("/KVBSvasth")
public class KvbSvasthWebServices {




private static final String FILE_UPLOAD_PATH = "D:\\home";


@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("/getKvbMemberDetails")
public String saveClaimSubmissionMultiplePdf(@Context HttpServletRequest request,@HeaderParam("jsondataaa")String jsondata) throws Exception
{


WebServiceManager webServiceManager=null;
try{
KvbSvasthVO kvbSvasthVO=null;
String msg="";
String enrollmentID="";

System.out.println("json Data get "+jsondata);


//try{
ObjectMapper mapper = new ObjectMapper();
kvbSvasthVO= mapper.readValue(jsondata, KvbSvasthVO.class);

//}catch(JsonParseException | JsonMappingException jsonexception){
// msg="Data parsing exception";
//return this.getJsonOutputString(msg, enrollmentID);
//}

if (ServletFileUpload.isMultipartContent(request)) {
final FileItemFactory factory = new DiskFileItemFactory();
final ServletFileUpload fileUpload = new ServletFileUpload(factory);
final List items = fileUpload.parseRequest(request);

if(items.size()>0){
if (items != null) {
System.out.println("its should 2");
final Iterator iter = items.iterator();
while (iter.hasNext()) {
System.out.println("its should 3");
final FileItem item = (FileItem) iter.next();
final String itemName = item.getName();
item.getFieldName();
item.getString();
String strFileExt = itemName.substring(itemName.lastIndexOf(".") + 1,itemName.length());
File folder = new File(FILE_UPLOAD_PATH);

webServiceManager=this.getWebServiceManagerObject();


//kvbSvasthVO.setFileDataOInputStream(item.getInputStream());
// kvbSvasthVO.setImageFileSize((int)item.getSize());
//kvbSvasthVO.setJsonData(jsondata);

webServiceManager.saveKvbSvasthCustDetails(kvbSvasthVO,item,jsondata);


if (!folder.exists()) {
System.out.println("its should 4");
folder.mkdir();
} // End Of if(!folder.exists())
if (!(strFileExt.equalsIgnoreCase("pdf"))) {
final File savedFile = new File(FILE_UPLOAD_PATH+ File.separator + itemName);
System.out.println("final file "+FILE_UPLOAD_PATH+ File.separator + itemName);
item.write(savedFile);
}


break;
}//end of while (iter.hasNext())
} // end of if (items != null)

}//end of if(items.size()>0)


}

}catch(Exception e){

System.out.println("exception occurs: ");
e.printStackTrace();
}
return jsondata;
}


public String getJsonOutputString(String message,String enrollementID){
JSONObject jsobj = new JSONObject();
LinkedHashMap<String, String> object = new LinkedHashMap();
//object.put("status", status);
object.put("msg",message);
object.put("enrollemntId",enrollementID);
jsobj.putAll(object);
return jsobj.toJSONString();
}


private WebServiceManager getWebServiceManagerObject() throws TTKException
{
WebServiceManager webServiceManager = null;
try
{
if(webServiceManager == null)
{
InitialContext ctx = new InitialContext();
webServiceManager = (WebServiceManager) ctx.lookup("java:global/TTKServices/business.ejb3/WebServiceManagerBean!com.ttk.business.webservice.WebServiceManager");
}//end if(webServiceManager == null)
}//end of try
catch(Exception exp)
{
throw new TTKException(exp, "webservice");
}//end of catch
return webServiceManager;
}//end getWebServiceManagerObject()

}

请帮忙,谢谢。

最佳答案

使用 header 传递 json 数据不是最佳实践 - 它们应该转到正文。但我们假设你有充分的理由这样做。为了传递图像,您需要首先将其转换为字节数组。以下是如何在 java 中设置 header 值的示例:

        HttpClient httpClient = HttpClients.createDefault()
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("jsondataaa", headerData);
HttpEntity requestEntity = new ByteArrayEntity(requestContent);
Path path = Paths.get("path/to/file");
byte[] data = Files.readAllBytes(path);
HttpEntity requestEntity = new ByteArrayEntity(data);
httpPost.setEntity(requestEntity);
logXmlRequestResponse(requestContent, operationType + " Request");
HttpResponse execute = httpClient.execute(httpPost);
httpPost.releaseConnection();

关于java - 如何编写客户端从Rest Web服务获取数据和图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50850397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com