0
我得到一個406錯誤,而在我的本地運行下面的代碼JSON輸出: -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;
}
}
我做了一些研究,大約在進入傑克遜核心ASL和傑克遜映射器,ASL到我的pom.xml,也是。我已經做了這些但仍然是相同的406錯誤.. 我從中獲取值的URL已在common.proprties文件中與用戶名和密碼一起定義。
你的客戶是什麼樣子,即你如何測試這個。 406錯誤與客戶端的Accept頭問題有關。覈實。 – arahant
以及我正在通過運行Maven構建然後獲取戰爭文件並部署在碼頭服務器上,然後使用瀏覽器檢查輸出來測試。如何檢查客戶端的接受頭文件?我是一個小菜,所以請準確。謝謝 – david419
也在@RequestMapping中,如果我設置headers = {「content-type = application/json」}它會拋出415錯誤,不支持的媒體類型 – david419