2009-05-04 58 views
1

我发出命令(线断为可读性):为什么curl在HTTP PUT中的消息正文之前发送命令行?

curl -H"X-RequestIsAbsolutePath: F" \ 
-T /tmp/out \ 
-H'Content-Type: application/xml' \ 
"http://localhost:8182/metadata/036-Rotated.JPG" 

我发送XML的消息体。我从服务器上的XML解析器收到关于prolog中不允许的内容的投诉。我添加了一个--trace-ACII选项添加到命令行,看到:

=> Send header, 270 bytes (0x10e) 
0000: PUT /metadata/036-Rotated.JPG HTTP/1.1 
0028: User-Agent: curl/7.19.4 (i386-apple-darwin9.6.0) libcurl/7.19.4 
0068: OpenSSL/0.9.8i zlib/1.2.3 
0083: Host: localhost:8182 
0099: Accept: */* 
00a6: X-RequestIsAbsolutePath: F 
00c2: Content-Type: application/xml 
00e1: Content-Length: 235 
00f6: Expect: 100-continue 
010c: 
== Info: Done waiting for 100-continue 
=> Send data, 235 bytes (0xeb) 
0000: curl -v -H"X-RequestIsAbsolutePath: F" "http://localhost:8182/me 
0040: tadata/036-Original.JPG".<metadata>. <Core>. <ImageOrientati 
0080: on editable="1" type="unsignedShort">.  <value raw="3"/>. 
00c0: </ImageOrientation>. </Core>.</metadata>.

为什么卷曲发送命令行本身作为邮件正文的一部分? XML解析器当然会抱怨。我怎样才能让curl停止这样做,并只将作为参数传递给文件的内容发送到-T选项?

仅供参考:我已经捕获了在服务器上发送的原始文本,是的,命令行确实正在发送。 FYI#2:我在Mac OS X上使用最新的卷曲(7.19.4)。

回答

2

为什么curl发送命令行本身作为消息正文的一部分?

它没有。你确定你没有把命令放在/tmp/out吗?

curl甚至无法访问ascii跟踪中看到的命令行,因为像引号之类的东西在被传递给程序之前被shell解释。

+0

呃,是的 - 命令在文件中。好吧,我现在觉得很蠢。 :( – 2009-05-04 19:31:17

相关问题