2012-05-28 10 views
5

में मुझे कोई समस्या है .. मैं XML से डाउनलोड करना चाहता हूं वेबसाइट से कुछ जानकारी (मुझे पता है कि कैसे करना है), मुझे पता है कि वेबसाइट से जानकारी कैसे प्राप्त करें, लेकिन समस्या यह है कि पहले मुझे लॉग इन करने की आवश्यकता है ।जावा/स्कैला | वेबसाइट

कोड की इसकी हिस्सा:

<form method="post" action="logowanie.php"> 
    <table class="center"> 
    <tr> 
    <td><label for="username">Login:</label></td> 
    <td><input type="text" name="username" value=""></td> 
    <td rowspan="2"><div class="submit"><input type="submit" value="OK" name="submit"></div></td> 
    </tr> 
    <tr> 
    <td><label for="password">Hasło:</label></td> 
    <td><input type="password" name="password" value=""></td> 

मैं कुछ कैसे उपयोगकर्ता नाम पासवर्ड और प्रेस सबमिट बटन दर्ज करना होगा। कोई विचार, कोड नमूने यह कैसे करें? बहुत बहुत धन्यवाद।

मैं इसे जावा/स्कैला में कर रहा हूं।

+1

उस साइट पर प्रमाणीकरण की प्रक्रिया क्या है? कुकी, पचाने, या कुछ और? – Rogach

उत्तर

4

जबकि अपाचे HttpClient काम करेगा, स्कैला से इसका उपयोग अनियमित और वर्बोज़ है, और Dispatch लाइब्रेरी एक अच्छा स्कैला रैपर प्रदान करती है जो आपको अधिक संक्षिप्त कोड लिखने देती है। आप इसे इस तरह इस्तेमाल कर सकते हैं:

import dispatch._ 

val u = url("https://site.com/logowanie.php") 
val info = Seq("username" -> "me", "password" -> "secret") 

val client = new Http 
client(u <<info>>> System.out) 

यह उदाहरण केवल प्रतिक्रिया मुद्रित होगा, लेकिन आप आसानी से प्रतिक्रिया से निपटने में और भी परिष्कृत तरीके प्रदान कर सकते हैं, और अपने client अब रखती कुकीज़ आप साइट के साथ बातचीत जारी रखने की आवश्यकता ।

import dispatch._ 
import dispatch.jsoup.JSoupHttp._ 

val u = url("https://myuni.edu/something/login") 
val info = Seq(
    "username" -> "me", 
    "password" -> "secret", 
    "warn"  -> "true", 
    "submit" -> "LOGIN", 
    "execution" -> "e1s1", 
    "_eventId" -> "submit" 
) 

val client = new Http 
val id = client(u </> (_.select("input[name=lt]").first.attr("value"))) 
client(u << info :+ ("lt" -> id) >>> System.out) 

यहाँ मैं डिस्पैच की JSoup उपयोग कर रहा हूँ:

यहाँ एक अधिक जटिल उदाहरण है कि मैं एक प्रणाली है कि मुझे आवश्यक प्रवेश करने से पहले फार्म से एक उत्पन्न पहचानकर्ता लेने के लिए में लॉग इन करने के लिए इस्तेमाल किया गया है फॉर्म पेज को पार्स करने के लिए समर्थन और मुझे पहचानने वाले पहचानकर्ता को खींचें, जिसे मैं अनुरोध सबमिट करते समय फॉर्म पैरामीटर में जोड़ सकता हूं।

+0

किसी भी विचार ग्रहण के साथ इसे एकीकृत करने के लिए कैसे? अच्छा लग रहा है, इसे कमांड लाइन से चलाया गया है, लेकिन सोच रहा है कि ग्रहण में कैसे करना है। धन्यवाद! – daaatz

+0

यह इस बात पर निर्भर करता है कि आप प्रोजेक्ट कैसे बना रहे हैं, आदि- देखें [यह उत्तर] (http://stackoverflow.com/a/6201089/334519) उदाहरण के लिए अधिक जानकारी के लिए। –

+0

im कोशिश कर इस कोड मैं इस मिल उपयोग कब करें: विवरण \t संसाधन \t पथ \t स्थान \t प्रकार मूल्य dispatch.Request \t main.scala \t/डिफ़ॉल्ट-fa01fe/src/मुख्य/स्केला \t लाइन 24 का सदस्य नहीं है \t स्कैला समस्या – daaatz

2

आप Apache Http Client का उपयोग कर सकते हैं। मूल रूप से

http://metacircular.wordpress.com/2007/02/07/towards-polite-http-retrieval-in-scala/

, आप:: यहाँ स्केला में इसका उपयोग करने पर ट्यूटोरियल है

  1. का दृष्टांत एक httpclient
  2. पैरामीटर
  3. मेक यूज़रनेम और पासवर्ड logowanie.php करने के लिए एक पोस्ट अनुरोध बनाओ जिस पृष्ठ को आप चाहते हैं उसे लाने के लिए उसी httpClient इंस्टेंस का उपयोग करके अनुरोध प्राप्त करें