Почему curl отправляет командную строку перед телом сообщения в HTTP PUT? - PullRequest
1 голос
/ 04 мая 2009

Я ввожу команду (строка разорвана для удобства чтения):

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.

1 Ответ

2 голосов
/ 04 мая 2009

Почему curl отправляет саму командную строку как часть тела сообщения?

Это не так. Вы уверены, что вы как-то не указали команду в /tmp/out?

curl даже не имеет доступа к командной строке, как показано в вашей трассировке ascii, поскольку такие вещи, как кавычки, интерпретируются оболочкой перед передачей в программу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...