2016-03-29 10 views
2

Ich muss eine Seite von primary_URL mit Jsoup in CFscript abrufen und analysieren.Jsoup, um Daten zu veröffentlichen und alternative URLs auf CFscript zu analysieren

Wenn der Seitenstatus nicht OK oder Daten beschädigt oder leer sind, sollte ich eine alternative Seite von secondary_URL versuchen.

primary_URL nur POST-Anfragen akzeptiert, und ich weiß nicht, wie es zu tun in cfscript

secondary_URL standardmäßig akzeptiert GET

Das ist eine Idee:

<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> 

Wie das springen secondary_URL für den Fall, dass die Antwort in Ordnung ist, aber die Daten als ungültig oder leer angezeigt werden? Eine Art von goto Betreiber?

Laufcoldfusion 11.

Antwort

4

Wie kommt man zum secondary_URL im Falle springen die Antwort ist in Ordnung, aber die Daten erscheint currupt oder leer zu sein? Eine Art von Operator?

Anstatt nur den statusCode zu überprüfen, rufen Sie eine Funktion auf. In dieser Funktion führen Sie alle notwendigen Prüfungen durch (beschädigte Daten, leere Daten ...).

<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> 
Verwandte Themen