我正在使用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将字符附加到文件的末尾,并且始终截断文件中的行数。我想我可以通过遍历服务器端的每个字符来找出添加的内容,但不值得。这甚至没有回答在谷歌组设置为应用程序引擎!