Я ввожу команду (строка разорвана для удобства чтения):
curl -H"X-RequestIsAbsolutePath: F" \
-T /tmp/out \
-H'Content-Type: application/xml' \
"http://localhost:8182/metadata/036-Rotated.JPG"
Я отправляю тело сообщения в формате XML. Я получаю жалобу от синтаксического анализатора XML на сервере о том, что содержимое не разрешено в прологе. Я добавил опцию --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>.
Почему curl отправляет саму командную строку как часть тела сообщения? Конечно, парсер XML будет жаловаться. Как я могу заставить curl прекратить это делать и отправлять только содержимое файла, переданного в качестве аргумента опции -T?
К вашему сведению: я записал необработанный текст, отправляемый на сервер, и да, командная строка действительно отправляется. К вашему сведению # 2: я использую последнюю версию curl (7.19.4) в Mac OS X.