那麼,如果我理解正確的(讓我知道如果我沒有):
如果用戶/密碼保護的,你應該發出一個HTTP POST(即是你從瀏覽器做的例子),並從該帖子獲得回覆?事情是這樣的:
http://www.informit.com/guides/content.aspx?g=java&seqNum=44
編輯:這裏是一個示例
我有一個頁面,看起來像這樣(它過於簡單,但儘管如此,這裏是):
<form action="../../j_spring_security_check" method="post" >
<input id="j_username" name="j_username" type="text" />
<input id="j_password" name="j_password" type="password"/>
<input type="image" class="submit" id="login" name="login" />
</form>
如果它位於網頁的哪個位置,則必須提供用戶名/密碼才能在此登錄頁面「後面」獲取實際內容。你真正發出的是一個HTTP POST這裏(我敢打賭,你的情況是一樣的)。
我們得到了相同的功能以編程的方式...
您需要的Apache HTTP客戶端庫(你很可能沒有它,但是這是最簡單的方式)。這是它的maven依賴。你正在爲Android做這個,對吧?從我讀過的內容來看,apache http client是Android中的默認設置。
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
public class HttpPost {
public static void main(String[] args) {
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod("http://localhost:20000/moika/moika/j_spring_security_check");
postMethod.addParameter("j_username", "ACTUAL_USER");
postMethod.addParameter("j_password", "ACTUAL_PASSWORD");
try {
int status = httpClient.executeMethod(postMethod);
System.out.println("STATUS-->" + status);
if(status == 302){
Header header = postMethod.getResponseHeader("location");
String location = header.getValue();
System.out.println("HEADER_VALUE-->" + location);
GetMethod getMethod = new GetMethod(location);
httpClient.executeMethod(getMethod);
String content = getMethod.getResponseBodyAsString();
System.out.println("CONTENT-->" + content);
}
String contentInCaseOfNoRedirect = postMethod.getResponseBodyAsString();
} catch (Exception exception){
exception.printStackTrace();
}
}
}
這可能看起來很怪異了一點,但我執行重定向(302),似乎與在RCF的問題,因此小的變通。
如果您不在服務器端重新執行任何操作,那麼您可以忽略檢查302的部分。
看看有什麼適合你的。
乾杯, 尤金。
你的方法似乎是正確的軌道上的內容,但讓我困惑。考慮到這種情況,是否可以提供一些關於如何獲取網站html源代碼的示例代碼? – Kgrover 2011-12-28 19:06:06
編輯答案。 Eugene – Eugene 2011-12-29 09:19:22
我會試驗一下,讓你知道。感謝您的迴應! – Kgrover 2011-12-30 03:23:13