Как отладить загрузку файла?

Я пытаюсь загрузить файл PDF на веб-сайт, используя систему управления контентом Hot Banana с использованием скрипта Python. Я успешно вошел на сайт и могу выйти, но не могу заставить работать загрузку файлов.

Загрузка файла является частью большой сложной веб-формы, которая отправляет данные формы и файл PDF через POST. Используя Firefox вместе с расширениями Firebug и Tamper Data, я взглянул на то, что браузер отправляет в POST и куда он идет. Я считаю, что имитировал данные, которые браузер отправлял в коде, но у меня все еще есть проблемы.

Я импортирую cookielib для обработки файлов cookie, poster для кодирования PDF, а также urllib и urllib2 для создания запроса и отправки его по URL-адресу.

Возможно ли, что регистрация открывателей плакатов стирает открыватели процессора файлов cookie? Я делаю это совершенно неправильно?


Изменить: какой хороший способ отладить процесс? На данный момент я просто выгружаю ответ urllib2 в текстовый файл и проверяю вывод, чтобы увидеть, соответствует ли он тому, что я получаю, когда загружаю файл вручную.

Редактировать 2: Крис Лайвли предложил опубликовать сообщение об ошибке, которое я получаю. Ответ от urllib2 не генерирует исключение, а просто возвращает:

<script>
    if (parent != window) { 
        parent.document.location.reload(); 
    } else { 
        parent.document.location = 'login.cfm'; 
    }
</script>

Я продолжу.


person afrosteve    schedule 10.03.2009    source источник
comment
Это может помочь, если вы опубликуете ошибки, которые вы получаете.   -  person NotMe    schedule 11.03.2009
comment
Я отредактирую свой пост с ошибками, когда вернусь в офис.   -  person afrosteve    schedule 11.03.2009
comment
Это проблема авторизации - я думаю, вас перенаправляют на вход через javascript.   -  person S.Lott    schedule 12.03.2009
comment
@S.Lott: Если это проблема авторизации, это означает, что мои файлы cookie испорчены. Верно?   -  person afrosteve    schedule 12.03.2009
comment
@afrosteve: обычно. Но также может быть, что у вас неверный URL-адрес и сайт перенаправляет вас для входа в систему. Или сайт ожидает найти идентификатор вашего сеанса в строке запроса (?sessionid=098qwe0r980qwe89r0q) или в POST требуется скрытое поле.   -  person S.Lott    schedule 12.03.2009
comment
@S.Lott: Хорошо, я проверю их. Спасибо за всю твою помощь. Очень ценю.   -  person afrosteve    schedule 12.03.2009


Ответы (3)


"Как лучше всего отлаживать процесс [веб-сервисов]?"

Сейчас я просто выгружаю ответ urllib2 в текстовый файл и проверяю результат, чтобы убедиться, что он соответствует тому, что я получаю, когда загружаю файл вручную.

Правильный. Вот и все, что есть.

HTTP — очень простой протокол: вы делаете запрос (в данном случае POST), и сервер отвечает. Не так много всего, и не так много всего, что вы можете сделать во время отладки.

Что еще вы хотите? Серьезно. Какой отладчик, по вашему мнению, может существовать для такого рода протоколов без сохранения состояния?

person S.Lott    schedule 11.03.2009
comment
Я представляю себе отладчик, который работает только внутри Bentley Continental. Затем я представляю, как мой клиент платит за Bentley вместо всех этих серверов. <вздох> - person S.Lott; 12.03.2009
comment
Что-то волшебное? Я не очень много работаю в Интернете, поэтому я подумал, что может быть какой-то инструмент, который используют все крутые ребята. Извините за невежество. - person afrosteve; 12.03.2009
comment
Мне также нужен ваш отладчик Bentley. - person afrosteve; 12.03.2009
comment
Не невежество — вы должны что-то иметь в виду. Какой отладчик вы имеете в виду? Серьезно. Что вы ожидали найти? Что бы вы хотели найти? Какие особенности он будет иметь? - person S.Lott; 12.03.2009
comment
Я имел в виду то, что явно указывало бы на ошибки. Возможно, сравнив фактический вывод с каким-то ожидаемым выводом, возможно, сопоставив заголовки, которые вы должны получить, если POST завершится правильно. Что, после написания этого, звучит как юнит-тест. - person afrosteve; 12.03.2009
comment
Четко указывайте ошибки -- если на сайте есть задокументированный API, то я согласен. Если вы тестируете сайт без хорошо документированного API, то не может быть четкого указания на ошибки, не так ли? - person S.Lott; 12.03.2009
comment
Здесь в игру вступает волшебный отладчик. А если серьезно, то вы делаете отличное замечание. - person afrosteve; 12.03.2009
comment
@afrosteve: На самом деле, ты высказал мысль. Если API четко определен, модульного тестирования достаточно. Если API не определен четко, нет лучшего способа отладки, чем то, что вы делаете. - person S.Lott; 13.03.2009

Такой инструмент, как WireShark, даст вам более полную трассировку на гораздо более низком уровне, чем плагины Firefox.

Часто это может быть что-то такое же простое, как неправильная установка типа содержимого или неспособность включить длину содержимого.

person i_am_jorf    schedule 11.03.2009

Возможно, вам лучше настроить сервер, чтобы понять, почему это не удается, а не пытаться отлаживать это на стороне клиента.

person lacker    schedule 11.03.2009
comment
Я новичок в таких делах. Что значит инструментировать сервер? - person afrosteve; 11.03.2009
comment
@afrosteve: у тебя есть доступ к серверу? Если это так, вам следует просмотреть журналы, чтобы увидеть, что происходит с точки зрения сервера. - person S.Lott; 11.03.2009
comment
@S.Lott: К сожалению, нет. Я подталкиваю черный ящик в этот момент. - person afrosteve; 12.03.2009