Хорошо, если я правильно понял (дайте мне знать, если я этого не сделал):
Если это защищено пользователем / паролем, следует ли вам опубликовать Http-пост (это то, что вы делаете из браузера, например) и получитьОтвет с этого поста?Примерно так:
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 клиент по умолчанию в 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.
Посмотрите, что работает для вас.
Ура, Евгений.