0

在本地主机上运行以下代码时出现 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;
}

最后,savailabilityreport 类是:-

//imports
public class SAvailabilityReport {

    private String time;


    public SAvailabilityReport()
    {

    }
    public void settime(String time)
    {
        this.time=time;
    }

}

我已经做了一些关于将jackson-core-asl和jackson-mapper-asl输入到我的pom.xml中的研究,而且。我已经完成了这些但仍然是相同的406错误。我从中获得价值的网址有与用户名和密码一起在 common.proprties 文件中定义。

4

1 回答 1

0

问题解决了,这只是格式化程序类中没有设置器的情况。一旦我将设置器放在我的格式化程序类中,它就开始工作了。

于 2014-02-24T05:54:11.633 回答