1

I'm trying to upload a PDF file to a website using Hot Banana's content management system using a Python script. I've successfully logged into the site and can log out, but I can't seem to get file uploads to work.

The file upload is part of a large complicated web form that submits the form data and PDF file though a POST. Using Firefox along with the Firebug and Tamper Data extensions I took a peek at what the browser was sending in the POST and where it was going. I believe I mimicked the data the browser was sending in the code, but I'm still having trouble.

I'm importing cookielib to handle cookies, poster to encode the PDF, and urllib and urllib2 to build the request and send it to the URL.

Is it possible that registering the poster openers is clobbering the cookie processor openers? Am I doing this completely wrong?


Edit: What's a good way to debug the process? At the moment, I'm just dumping out the urllib2 response to a text file and examining the output to see if it matches what I get when I do a file upload manually.

Edit 2: Chris Lively suggested I post the error I'm getting. The response from urllib2 doesn't generate an exception, but just returns:

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

I'll keep at it.

4

3 に答える 3

1

WireSharkのようなツールは、Firefox プラグインよりもはるかに低いレベルでより完全なトレースを提供します。

多くの場合、これは content-type が正しく設定されていない、または content-length が含まれていないなどの単純なものである可能性があります。

于 2009-03-11T03:42:05.747 に答える
0

クライアント側でこれをデバッグしようとするよりも、サーバーをインストルメント化して、これが失敗する理由を確認する方がよい場合があります。

于 2009-03-11T01:54:55.677 に答える
0

「[Web サービス] プロセスをデバッグする良い方法は何ですか?」

現時点では、urllib2 の応答をテキスト ファイルにダンプし、出力を調べて、ファイルを手動でアップロードしたときに得られるものと一致するかどうかを確認しています。

正しい。それがすべてです。

HTTP は非常に単純なプロトコルです。要求 (この場合は POST) を行うと、サーバーが応答します。デバッグ中にできることは他にあまりありません。

他に何が欲しいですか?真剣に。この種のステートレス プロトコルには、どのような種類のデバッガーが存在すると想像できますか?

于 2009-03-11T13:09:28.190 に答える