-Музыка

 -Кнопки рейтинга «Яндекс.блоги»

 -неизвестно

 -Поиск по дневнику

Поиск сообщений в Greedsoul

 -Подписка по e-mail

 

 -Сообщества

Читатель сообществ (Всего в списке: 1) Deviant_ART

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 03.01.2010
Записей: 57
Комментариев: 225
Написано: 573


Коротко о HttpRequest, HttpResponse, Get и Post

Понедельник, 06 Февраля 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-запросы, обрабатывает их и выдает ответ.
Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку