• Авторизация


Коротко о HttpRequest, HttpResponse, Get и Post 06-02-2012 16:39 к комментариям - к полной версии - понравилось!


Заранее прошу прощения за ошибки: я не программист, а лишь студент. Более опытных людей попрошу поправить меня и если что - статья будет изменена или переписана.

И так, недавно начал писать програмку, которая должна работать с вебом (автоматизировать некоторые рутинные задачи, к примеру постить сообщения в мой блог в заданное время). Пришлось разобраться как работает браузер и что же реально происходит "за кулисами". Для начала нужно было понять, что происходит просто при нажатии на кнопку? Само собой кнопка может вести на страницу, может вызывать скрипт, а может вызывать submit. Если с первыми двумя все более-менее ясно и на интуитивном уровне, то с последним все сложнее.

Если вкратце - веб сервера* могут обмениваться сообщениями. В нашем случае наш браузер представляет собой веб-сервер. Для обмена сообщениями веб сервера используют методы Request и Response (запрос и ответ). Тоесть мы отправляем реквест веб-серверу, он нам возвращает респонс (например html страницу). Отлично, с ответом все более менее ясно: веб сервер возвращает нам либо html страницу либо файл, но что же происходит во время запроса?

Обычно мы юзаем обыкновенный httpRequest для передачи запроса, у которого есть два метода: Get и Post. Get метод это почти что переход по ссылке. Вначале запроса написан url, потом символ "?", который указывает на начало передачи параметров, потом сами параметры. Параметры, которые передаются, это и есть необходимые параметры для сервера, чтобы дать нам ответ. Эти параметры всегда передаются в виде пары Name=Value.

Допустим мы логинимся на сайте. Для этого нам нужно заполнить поле логин, пароль и нажать на кнопку.
Если посмотреть в html код страницы, то можно увидеть, что поле для ввода имени будет иметь атрибут name="someName", и возможно value="emptyValue"/defaultValue="defaultValue".

В случае с логином у нас будет:
input name="login" value="" /
input name="pass" value="" /

Пары данных формируются таким образом: name=value и разделяются знаком "&".

Get запрос будет выглядеть так http://somesite.com/login.html?login=myLoginName&pass=myPassword

С Get разобрались, что же с Post. Если говорить грубо, Post - это расширенный Get запрос. В случае с Post запросом наш веб сервер передает все тоже самое, что и Get запрос + передает данные типа user-agent, cookies, cookie-policy host, content-length, connection-type.

Понять, как работать с Post запросом сложнее, поскольку наличие браузера скрывает от нас сам процесс Post запроса. Для того, чтобы хоть как-то упростить эту часть посмотрите на краткий пример (язык - java. Позже будет оформлен более полный пример):

...
code:

HttpConnection conn = null;
String url = "http://www.mysite.com/login.jsp";
String agent = "Mozilla/4.0";
String rawData = "userid=joe&password=guessme";
String type = "application/x-www-form-urlencoded";

String encodedData = encode( rawData ); // user-supplied

try {
conn = (HttpConnection) Connector.open( url );
conn.setRequestMethod( HttpConnection.POST );
conn.setRequestProperty( "User-Agent", agent );
conn.setRequestProperty( "Content-Type", type );
conn.setRequestProperty( "Content-Length",
encodedData.length() );

OutputStream os = conn.openOutputStream();
os.write( encodedData.getBytes() );

int rc = conn.getResponseCode();
... // process it
}
catch( IOException e ){
// handle the error here
}


...
(с) http://developers.sun.com/mobility/midp/ttips/HTTPPost/





*Web-сервером называют программу, которая принимает HTTP-запросы, обрабатывает их и выдает ответ.
вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Коротко о HttpRequest, HttpResponse, Get и Post | Greedsoul - Fortune Cookies Pottle | Лента друзей Greedsoul / Полная версия Добавить в друзья Страницы: раньше»