2016-03-29 7 views
2

Je dois obtenir et analyser une page de primary_URL en utilisant Jsoup dans CFscript.Jsoup pour publier des données et analyser des URL alternatives sur CFscript

Si l'état de la page n'est pas OK ou si les données sont corrompues ou vides, je devrais essayer une autre page de secondary_URL.

primary_URL accepte les requêtes POST seulement et je ne sais pas comment le faire dans cfscript

secondary_URL accepte GET par défaut

Ceci est une idée:

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

Comment passer à la secondary_URL dans le cas où la réponse est OK mais les données semblent être figées ou vides? Une sorte d'opérateur goto?

exécutant ColdFusion 11.

Répondre

4

Comment passer à la secondary_URL dans le cas où la réponse est OK mais les données semblent être currupt ou vide? Une sorte d'opérateur goto?

Au lieu de vérifier le statusCode uniquement, appelez une fonction. Dans cette fonction, effectuez toutes les vérifications nécessaires (données corrompues, données vides ...).

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