Как имитировать отправку формы HTML в запросе POST? - PullRequest
22 голосов
/ 07 декабря 2011

У меня есть HTML-форма, которая используется для отправки сообщений об ошибках из приложения на сервер. Мне нужно имитировать это поведение программно. Как будет выглядеть соответствующий запрос POST (или серия запросов)?

<form name="bugreport" method="post" enctype="multipart/form-data" action="http://my-server.com/bugreport.php">
    <div name="SentData">
        <textarea name="logfile" class="UserVisible"></textarea><br>
        <textarea name="configfile" class="UserVisible"></textarea><br>
    </div>
    <textarea name="usercomment" class="invisible"></textarea><br>
    <input name="useremail" type="text" class="invisible">
    <input class="invisible" type="submit" value="Send">
</form> 

1 Ответ

43 голосов
/ 08 декабря 2011

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

fieldname1=fieldvalue1&fieldname2=fieldvalue2

т.е. тело запроса выглядит как типичная строка запроса.


Вот как может выглядеть запрос для вашей формы:

POST /bugreport.php HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: [size of the request body]

logfile=blabla&configfile=more+blabla&usercomment=hello&useremail=

Чтобы убедиться, что ваша программа соответствует тому, что будет делать браузер, вы можете опубликовать форму в Firefox, а затем проверить заголовки и текст запроса, используя сетевую панель Firebug .

...