Java调用Http接口(1)--编写服务端,
Http接口输入的数据一般是键值对或json数据,返回的一般是json数据。本系列文章主要介绍Java调用Http接口的各种方法,本文主要介绍服务端的编写,方便后续文章里的客户端的调用。文中所使用到的软件版本:Java 1.8.0_191、Spring 5.1.9。
1、服务端Controller
packagecom.inspur.demo.web.controller;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.io.OutputStream;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestBody;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestMethod;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importorg.springframework.web.multipart.MultipartFile;importcom.inspur.common.entity.CallResult;importcom.inspur.common.util.FileUtil;importcom.inspur.demo.entity.User;
@Controller
@RequestMapping(value="/demo/test/", method ={RequestMethod.GET, RequestMethod.POST})public classTestController {private static Logger logger = LoggerFactory.getLogger(TestController.class);
@RequestMapping("getUser")
@ResponseBodypublic CallResultgetUser(String userId, String userName) {
User user= newUser();
user.setUserId(userId);
user.setUserName(userName);
CallResult result = new CallResult(0, "OK", user);returnresult;
}/*** 传入json
*@paramuser
*@return
*/@RequestMapping("addUser")
@ResponseBodypublic CallResultaddUser(@RequestBody User user) {
logger.info(user.toString());
CallResult result = new CallResult(0, "OK", "用户增加成功");returnresult;
}/*** 上传文件和参数
*@paramfile
*@paramtype
*@return
*/@RequestMapping("multi")
@ResponseBodypublic CallResult multi(@RequestParam("file") MultipartFile file, String param1, String param2) {
logger.info("file={},param1={},param2={}", file.getOriginalFilename(), param1, param2);
InputStream in= null;
OutputStream out= null;
CallResult result = new CallResult(0, "OK", "上传成功");try{
in= new BufferedInputStream(file.getInputStream(), 16 * 1024);
String fileName= "d:/temp/multi_" + System.currentTimeMillis() + "_" +file.getOriginalFilename();
out= new BufferedOutputStream(new FileOutputStream(fileName), 16 * 1024);byte[] buffer = new byte[16 * 1024];int len = 0;while ((len = in.read(buffer)) != -1) {
out.write(buffer,0, len);
}
}catch(Exception e) {
result= new CallResult(-1, "发生异常", "");
e.printStackTrace();
}finally{
FileUtil.close(in);
FileUtil.close(out);
}returnresult;
}
}
2、其他辅助类
2.1、CallResult类
packagecom.inspur.common.entity;importjava.io.Serializable;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Map;importcom.fasterxml.jackson.core.JsonProcessingException;importcom.fasterxml.jackson.databind.ObjectMapper;/***
*@authorwuyy
*
*@param*/
public class CallResult implementsSerializable {private static final long serialVersionUID = 1L;/*** 返回码
* 0 正常,其他异常*/
private int returnCode = 0;/*** 描述*/
private String description = "OK";/*** 结果数据*/
privateT result;publicCallResult(){}public CallResult(intreturnCode, String description) {this.returnCode =returnCode;this.description =description;
}public CallResult(intreturnCode, String description, T result) {this.returnCode =returnCode;this.description =description;this.result =result;
}public intgetReturnCode() {returnreturnCode;
}public void setReturnCode(intreturnCode) {this.returnCode =returnCode;
}publicString getDescription() {returndescription;
}public voidsetDescription(String description) {this.description =description;
}publicT getResult() {returnresult;
}public voidsetResult(T result) {this.result =result;
}
@OverridepublicString toString() {//return JSON.toJSONString(this, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty);
try{return new ObjectMapper().writeValueAsString(this);
}catch(JsonProcessingException e) {
e.printStackTrace();
}return "";
}
}
View Code
2.2、User类
packagecom.inspur.demo.entity;public classUser {privateString userId;privateString userName;publicString getUserId() {returnuserId;
}public voidsetUserId(String userId) {this.userId =userId;
}publicString getUserName() {returnuserName;
}public voidsetUserName(String userName) {this.userName =userName;
}
@OverridepublicString toString() {return "User [userId=" + userId + ", userName=" + userName + "]";
}
}
View Code
2.2、FileUtil类
packagecom.inspur.common.util;importjava.io.File;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;/*** 文件操作工具
**/
public classFileUtil {privateFileUtil() {}public static voidclose(InputStream in) {try{if (in != null) {
in.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}public static voidclose(OutputStream out) {try{if (out != null) {
out.close();
}
}catch(IOException e) {
e.printStackTrace();
}
}
}
View Code
3、部署
访问地址为:
http://localhost:8080/webframe/demo/test/getUser
http://localhost:8080/webframe/demo/test/addUser
http://localhost:8080/webframe/demo/test/multi
相关文章暂无相关文章