我正在使用perl腳本向Google Appengine應用程序發佈POST。我使用-F選項發佈包含一些XML的文本文件。如何爲POST請求獲取正確的內容長度
http://www.cpan.org/authors/id/E/EL/ELIJAH/bget-1.1
有一個1.2版本,已經測試並得到了同樣的問題。這篇文章看起來像這樣。
Host: foo.appspot.com
User-Agent: lwp-request/1.38
Content-Type: text/plain
Content-Length: 202
<XML>
<BLAH>Hello World</BLAH>
</XML>
我修改了這個例子,所以202不正確,不用擔心。解決問題。 Content-Length與文件中的字節數相匹配,但除非我手動增加Content-Length並不發送所有文件,否則幾個字節會被截斷。截斷的字節數對於不同大小的文件是不一樣的。我在腳本上使用了-r選項,我可以看到它正在發送的內容,它正在發送所有文件,但Google Appengine self.request.body顯示並非所有內容都已收到。我認爲解決方案是爲Content-Length獲取正確的編號,顯然它不像文件字節數那樣簡單,或者Perl腳本以某種方式破壞它。
更新: 感謝埃裏克森的正確答案。我使用printf將字符附加到文件的末尾,並且始終截斷文件中的行數。我想我可以通過遍歷服務器端的每個字符來找出添加的內容,但不值得。這甚至沒有回答在谷歌組設置爲應用程序引擎!