Java spring中的406错误,使用jackson映射器输出json
在本地主机上运行以下代码时出现406错误:- 控制器代码:-Java spring中的406错误,使用jackson映射器输出json,java,json,spring-mvc,jackson,http-status-code-406,Java,Json,Spring Mvc,Jackson,Http Status Code 406,在本地主机上运行以下代码时出现406错误:- 控制器代码:- //imports import AvailabilityReportService; import SAvailabilityReport; @Controller @RequestMapping("/service/*") public class SAvailabilityController { @Autowired @Qualifier("AvailabilityReportService") pr
//imports
import AvailabilityReportService;
import SAvailabilityReport;
@Controller
@RequestMapping("/service/*")
public class SAvailabilityController {
@Autowired
@Qualifier("AvailabilityReportService")
private AvailabilityReportService availabilityReportService;
@RequestMapping(value = "/{cat}", method = RequestMethod.GET)
public @ResponseBody
SAvailabilityReport getAvailabilityReport(@PathVariable String cat) {
try
{
return availabilityReportService.generateAvailabilityReport(cat);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
可用性报告服务类别:-
import SAvailabilityReport;
public interface AvailabilityReportService {
public SAvailabilityReport generateAvailabilityReport(String cat) throws Exception;
}
现在是实现上述类的availabilityreportserviceimpl类:-
//The required imports
@Service("AvailabilityReportService")
public class AvailabilityReportServiceImpl implements AvailabilityReportService {
private @Value("${username}")
String username;
private @Value("${password}")
String password;
private @Value("${username1}")
String username1;
private @Value("${password1}")
String password1;
private PropertiesConfiguration propConfig;
@PostConstruct
public void initIt() throws Exception {
String propertiesFile = "/META-INF/common.properties";
propConfig = new PropertiesConfiguration(this.getClass().getResource(
propertiesFile));
propConfig.setReloadingStrategy(new FileChangedReloadingStrategy());
}
public SAvailabilityReport generateAvailabilityReport(String cat)
throws Exception {
String user;
String pass;
String time;
if (cat == null)
return null;
String url = (String) propConfig.getProperty("s_"
+ cat.toLowerCase());
if (url == null)
return null;
SAvailabilityReport availabilityReport = new SAvailabilityReport();
if((cat.toLowerCase()).equals("h") || (cat.toLowerCase()).equals("f"))
{
user=username;
pass=password;
}
else
{
user=username1;
pass=password1;
}
WebClient webClient = provideCredentials(user,pass);
HtmlPage resultPage = webClient.getPage(url);
HtmlTable resultTable = (HtmlTable) resultPage.getByXPath(
"//table[@class='data']").get(0);
List<HtmlTableRow> rowsList = resultTable.getRows();
int rowsSize = rowsList.size();
time=(resultTable.getCellAt((rowsSize-1),1)).asText();
availabilityReport.settime(time);
return availabilityReport;
}
private WebClient provideCredentials(String username, String password) {
WebClient webClient = new WebClient();
DefaultCredentialsProvider credentialsProvider = (DefaultCredentialsProvider) webClient
.getCredentialsProvider();
credentialsProvider.addCredentials(username, password);
return webClient;
}
我做了一些关于将jackson core asl和jackson mapper asl输入pom.xml的研究,也做了一些,但仍然是相同的406错误。。
从中获取值的url已在common.properties文件以及用户名和密码中定义 问题解决了这只是格式化程序类中没有setter的情况。我一把setter放进我的formatter类,它就开始工作了。你的客户机是什么样子的,即你是如何测试的。406错误与客户端的Accept标头问题有关。我的测试方法是运行一个maven构建,然后获取一个war文件,在jetty服务器上部署,然后使用浏览器检查输出。如何检查客户端的accept标头?我不知道这件事,所以请说得准确一点。感谢@RequestMapping中的@RequestMapping,如果我设置headers={content type=application/json},它会抛出415错误,即不支持的媒体类型
//imports
public class SAvailabilityReport {
private String time;
public SAvailabilityReport()
{
}
public void settime(String time)
{
this.time=time;
}
}