Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java spring中的406错误,使用jackson映射器输出json_Java_Json_Spring Mvc_Jackson_Http Status Code 406 - Fatal编程技术网

Java spring中的406错误,使用jackson映射器输出json

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

在本地主机上运行以下代码时出现406错误:-

控制器代码:-

//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;
    }

}