java - 在 spring-boot 中使用 RestTemplate 返回 404
问题描述
我正在尝试使用 rest 模板在 springboot 应用程序中的 post 请求中发送正文。这是控制器:(我删除了@RequestBody
因为我使用了application/x-www-form-urlencoded
标题)
@RestController
@CrossOrigin
@RequestMapping("/api")
public class SentimentParserController {
@Autowired
private SentimentParserService sentimentParserService;
@RequestMapping(value = "/something", method = RequestMethod.POST, consumes="application/x-www-form-urlencoded")
public ResponseEntity<mcResponse>getTheSentiments( mcSentimentRequestDTO sentimentRequestDTO){
return sentimentParserService.getSentimentsMc(sentimentRequestDTO);
}
}
我想sentimentRequestDTO
在发布请求中将对象(语言、键和文本)作为正文发送以获取 mcResponse:
公共 mcResponse parseTheSentiments(字符串文本,语言语言,字符串键)抛出异常 {
RestTemplate restTemplate = new RestTemplate();
String request = "http://localhost:8080";
mcSentimentRequestDTO mSentiments =new mcSentimentRequestDTO(key,"EN",text);
HttpHeaders headers = new HttpHeaders();
headers.add("content-type", "application/x-www-form-urlencoded");
MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("key", key);
map.add("txt", text);
map.add("lang", Languages.ENGLISH.toString());
HttpEntity<MultiValueMap<String, String>> request1 = new HttpEntity<MultiValueMap<String, String>>(map, headers);
mcResponse response = restTemplate.postForObject(request, request1 , mcResponse.class );
return response;
}
但是,我收到以下错误:404 null。
你能帮我么?在此先感谢,这里是服务类:
public ResponseEntity<mcResponse> getSentimentsMc(mcSentimentRequestDTO sentimentRequestDTO){
ResponseEntity<mcResponse> dto = null;
try {
dto = sentimentConverter.getTheSentiments(mcsParser.parseTheSentiments(sentimentRequestDTO.getText(),
Languages.ENGLISH, sentimentRequestDTO.getKey()));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dto;
}
解决方案
看起来应该是可变请求
String request = "http://localhost:8080/something";
此外,如果控制器类有前缀,这个前缀也应该在请求中。我的意思是如果你的课看起来像这样
@RestController
@RequestMapping("/myApi")
public class CertificateController {
....
@RequestMapping(value = "/something", method = RequestMethod.POST)
public ResponseEntity<mcResponse>getTheSentiments( mcSentimentRequestDTO sentimentRequestDTO){
return sentimentParserService.getSentimentsMc(sentimentRequestDTO);
}
那么请求应该是
String request = "http://localhost:8080/myApi/something";
推荐阅读
- json - 无法使用 POSTMAN 从站点获得响应
- reactjs - 访问除根以外的任何 URI 导致 404 - nginx
- c# - 将下一行中的新记录添加到 C# 中的现有 excel 文件中
- php - 将curl与http身份验证一起使用时如何修复需要身份验证的错误401
- reactjs - `height:'100%', width:'100%'`与`Flex:1`之间的区别
- google-chrome-extension - 在 Chrome/Firefox 扩展中加载 Javascript 之前将 HTML 插入页面
- python - 当前安装 zipline 的工作方法?尝试了一切
- java - paintComponent() TextField 导致无限循环(自身 + 父级)
- c# - 如何使用流体合成从 C# 中的声音字体生成声音
- swift - 根据传递的参数返回不同的类型