Как отправить HTTP-сообщение в CGI-скрипт - PullRequest
1 голос
/ 19 сентября 2011

Я пробовал этот Совет по Java, но безуспешно. И под неудачным я имею в виду, что ответ, который я прочитал, был той же самой точной страницей.

Вот частичный скриншот начальной страницы -

enter image description here

Как видите, я пытаюсь заполнить поля Имя пользователя и Пароль / Пароль . Это позволит мне получить доступ к другим интересующим страницам. Если это поможет, вот фрагмент тега form -

<form method="post" action="platform.cgi">

Из атрибута action я предположил, что на post он выполнит сценарий platform.cgi . Это правильно? Кроме того, что касается кнопки Login , она вызывает метод javascript (т.е. loginValidate()) -

<input type="submit" value="Login" name="umi.loginAuth" class="b0" title="Login" onclick="return loginValidate ()">

Кроме того, вот фрагмент из двух текстовых полей, если это также помогает -

<input type="text" name="web0x120010" id="txtUserName" size="26" class="txtbox" maxlength="31">
<input type="password" name="web0x120011" id="txtPwd" size="26" class="txtbox" maxlength="64">

Когда я заполнил содержимое , как в примере, я использовал txtUserName и txtPwd, но это не сработало. Любые идеи или другие ресурсы, которые могут мне помочь?

Если это не совсем понятно, пожалуйста, дайте мне знать - спасибо!

Ответы [ 2 ]

4 голосов
/ 19 сентября 2011

Если ваша проблема заключается в том, чтобы опубликовать некоторые данные и попасть на сайт, то я бы посоветовал вам использовать библиотеку common-http-client , которая по существу создана для подобных проблем.Типичный способ вызова метода публикации на сайт заключается в следующем (от Здесь )

HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost("http://vogellac2dm.appspot.com/register");
        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("registrationid",
                    "123456789"));
            post.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            HttpResponse response = client.execute(post);
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    response.getEntity().getContent()));
            String line = "";
            while ((line = rd.readLine()) != null) {
                System.out.println(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

. Это становится очень удобным для вас, вам не нужно управлять сессией, так какHttClient делает это за вас.Это важно для доступа к последующим страницам после входа в систему, если вы используете тот же экземпляр HttpClient.

2 голосов
/ 19 сентября 2011

Публикация с именами (web0x120010 и web0x120011), а не с идентификаторами полей ввода, а также с парой ключ-значение umi.loginAuth=Login Если это не помогает, установите расширение HttpFox Firefox, запишите обычный запрос на вход и проверьте параметры записи в журнале.

Согласно http://stupidunixtricks.blogspot.com/2010_10_01_archive.html, вам также следует позаботиться о файлах cookie.

...