В настоящее время я работаю над мобильным приложением, которое будет взаимодействовать с сервером RESTfull по протоколу HTTP. Для этого я сделал рабочий код и установил связь.
Чтобы сервер идентифицировал пользователей, я хотел использовать куки (какой-то сеанс куки). Итак, я начал с двух следующих вспомогательных методов для создания HttpClient и контекста (включая мой cookie).
// Gets a standard client - set to HTTP1.1
private HttpClient getClient() {
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
return new DefaultHttpClient(params);
}
// Gets the context with cookies to be used. This is to make each user unique
private HttpContext getHttpContext(String server) {
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie cookie = new BasicClientCookie("X-ANDROID-USER", "some name");
cookie.setDomain(server);
cookie.setPath("/");
cookie.setVersion(1);
cookieStore.addCookie(cookie);
HttpContext localContext = new BasicHttpContext();
localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
return localContext;
}
Затем я подключаюсь к серверу, используя следующее (функция чтения). Это, в основном, требует генерации Client и Conext двумя последними вспомогательными методами и выполнения обычного GET-запроса.
// Соединяется с оставшимся сервером и возвращает возвращаемое значение (запрос на получение) </p>
<pre>
private String restfullRead(URI uri, String server)
{
// Sets up the different objects needed to read a HttpRequest
HttpClient client = this.getClient();
HttpGet request = new HttpGet();
request.setURI(uri);
HttpContext context = this.getHttpContext(server);
// Connects to the server and reads response
try {
HttpResponse response = client.execute(request, context);
reader.close();
}
catch (Exception e) {
return "";
}</pre>
<p>When I run this to my server I get the following request.<br/>
GET /info/1 HTTP/1.1<br/>
Host: 192.168.0.191:8080<br/>
Connection: Keep-Alive
Как видите, это не относится к файлам cookie. Вот почему я удивляюсь, почему файл cookie, созданный в getHttpContext, не отправляется в запросе?