我需要使用CFscript中的Jsoup从npm install
获取和解析页面。
如果页面状态不正常或数据已损坏或为空,我应该尝试primary_URL
的替代页面。
secondary_URL
仅接受POST请求,我不知道cfscript中的操作方法
primary_URL
默认接受GET
这是一个想法:
secondary_URL
如果响应正常但数据似乎是否已损坏或为空,如何跳转到<cfscript>
jsoup = createObject("java", "org.jsoup.Jsoup");
response = jsoup.connect(primary_URL).userAgent("#CGI.Http_User_Agent#").timeout(10000).method(Connection.Method.POST).execute(); // How to use Method.POST in this case???
if(response.statusCode() == 200)
{
doc = response.parse();
theData = doc.select("div##data");
...
`some other parsing and SQL UPDATE routine`
}
else
{
response = jsoup.connect(secondary_URL).userAgent("#CGI.Http_User_Agent#").timeout(10000).execute(); // default is GET
if(response.statusCode() == 200)
{
doc = response.parse();
theData = doc.select("div##same_data");
...
`some other parsing and SQL UPDATE routine`
}
}
</cfscript>
?一种secondary_URL
运营商?
运行ColdFusion 11。
答案 0 :(得分:4)
如果响应正常但数据似乎是否已损坏或为空,如何跳转到secondary_URL?一种goto运算符?
不是仅检查statusCode,而是调用函数。在此函数内执行所有必要的检查(损坏的数据,空数据......)。
<cfscript>
function IsValid(response) {
// Perform all the tests here...
// Return TRUE on success or FALSE otherwise
return true;
}
jsoup = createObject("java", "org.jsoup.Jsoup");
response = jsoup //
.connect(primary_URL) //
.userAgent("#CGI.Http_User_Agent#") //
.timeout(10000) //
.post(); // Simply call the post() method for posting...
if( IsValid(response) ) {
} else {
response = jsoup //
.connect(secondary_URL) //
.userAgent("#CGI.Http_User_Agent#") //
.timeout(10000) //
.get(); // Make your intent clear
if ( IsValid(response) ) {
// ...
}
}
</cfscript>