Controller: com.penghaisoft.wcs.huakang.controllercom.alibaba.fastjson.JSONObjectlombok.extern.slf4j.org.springframework.boot.autoconfigure.condition.org.springframework.web.bind.annotation.org.springframework.web.bind.annotation.RequestMethodorg.springframework.web.bind.annotation.org.springframework.web.bind.annotation.java.util.Map(prefix = name = havingValue = )SLWCSController {
@Autowired
public SLWCSService sLWCSService;
/**
*功能描述: 测试
*/
@PostMapping("/httpService/test_zx")
public JSONObject testURL(@RequestParam Map map){
System.out.println("测试!");
net.sf.json.JSONObject jsonObject = sLWCSService.taskReceive(map);
return jsonObject;
}
} Service public interface SLWCSService {
/** * 任务接收接口 */
public JSONObject taskReceive(Map<String,String> map); } |
Service实现类: @Service("sLWCSService")
public class SLWCSServiceImpl implements SLWCSService {
//速锐接口地址
@Value(value ="${surui.surui-url}")
private String SURUI_URL;
@Autowired
public PostResponseUtil postResponseUtil;
@Override
public JSONObject taskReceive(Map<String,String> map){
//任务接收接口-路径
String url =SURUI_URL+"/taskReceive";
JSONObject jsonObject = selectJsonObject(map, url);
return jsonObject;
} |
公共方法:
import net.sf.json.JSONObject;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.client.RestTemplate;
import lombok.extern.slf4j.Slf4j;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.Set;
/**
* 发送请求公共方法
*/
@Slf4j
@Component
public class PostResponseUtil {
/**
* 把json数据转化为参数,为get请求和post请求stringentity的时候使用
* @param argument 请求参数,json数据类型,map类型,可转化
* @return 返回拼接参数后的地址
*/
public String changeJsonToArguments(JSONObject argument) {
Set<String> keys = argument.keySet();
for (String key : keys) {
String value = argument.getString(key);
argument.put(key, urlEncoderText(value));
}
String one = argument.toString();
String two = "?" + one.substring(1, one.length() - 1).replace(",", "&").replace(":", "=").replace("\"", "");
//时间戳
one =two+"×tamp="+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()).toString();
return one;
}
/**
* url进行转码,常用于网络请求
* @param text 需要加密的文本
* @return 返回加密后的文本
*/
public String urlEncoderText(String text) {
String result = "";
try {
result = java.net.URLEncoder.encode(text, "utf-8");
} catch (Exception e) {
System.out.println("数据格式错误!");
e.printStackTrace();
}
return result;
}
/**
* 解析post请求的返回值
* @param wcsResp 返回的JSON值
* @return
*/
public JSONObject jieXiWmsReturn(ResponseEntity<JSONObject> wcsResp) {
//获取return的信息
JSONObject jsonObject =null;
if (wcsResp.getStatusCodeValue() != 200) {
//调取接口失败
log.info("调取接口失败!");
jsonObject=null;
} else {
log.info("调WMS接口,响应成功!");
//调取接口成功,获取返回数据
JSONObject noticeResult = wcsResp.getBody();
log.info("响应数据:"+noticeResult.toString());
//String resultData = jsonObject.fromObject(noticeResult.getString("Response")).getString("return");
//log.info("响应数据-return:"+resultData);
//jsonObject = jsonObject.fromObject(resultData);
jsonObject =noticeResult;
}
return jsonObject;
}
/**
* post请求
* @param map 请求体
* @return
*/
public ResponseEntity<JSONObject> getJsonObjectEntity(String url,Map<String, String> map) {
//采用JSONObject或者实体类传递参数
//创建一个响应头
HttpHeaders headers = new HttpHeaders();
//设置请求资源或数据类型:application/json headers.setContentType(MediaType.APPLICATION_JSON)
headers.setContentType(MediaType.parseMediaType("application/json; charset=UTF-8"));
headers.add("Accept", MediaType.APPLICATION_JSON.toString());//指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序.
HttpEntity<Map> request = new HttpEntity<Map>(map, headers);
log.info("调用WMS接口-开始:");
//调用WMS接口
ResponseEntity<JSONObject> wcsResp = new RestTemplate().postForEntity(url, request, JSONObject.class);
log.info("调用WMS接口-结束,wcsResp:"+wcsResp);
return wcsResp;
}
/**
* 发送请求并解析JSON-欧尚
* @param map 请求体
* @param url 请求路径
* @return 返回数据
*/
@ResponseBody
public JSONObject selectJsonObject(Map<String, String> map, String url) {
//post请求
ResponseEntity<String> wcsResp= getJsonEntity(url, map);
System.out.println("post请求 返回数据:"+wcsResp);
//解析
JSONObject jsonObject = jieXiWmsReturn(wcsResp);
return jsonObject;
}
} |
|