2015-03-19 2 views
0

Мне нужна помощь. Это мой первый вопрос, задающий здесь вопрос, но нашел много замечательных ответов, и я надеюсь, что кто-то может мне помочь. Я пытаюсь создать HTTP POST через пакетный файл, используя Curl. Я успешно создал свои заголовки и захватил всю необходимую информацию у WireShark, но я застрял. Кажется, я не могу правильно настроить POST BODY. Может кто-нибудь указать мне в правильном направлении? Моя конечная цель - имитировать то же действие, что и нажатие кнопки в веб-приложении silverlight, которое создает файл резервной копии. Это мой текущий HTTP POST с заголовками. Когда вы перейдете к данным, вы увидите ПОСТ-ДАННЫЕ, которые я обнаружил на экране.Curl Batch file HTTP POST URI

curl -H "Accept: " -H "User-Agent: " -H "Content-Type: " -H "Host:xx.xx.xx.xx" -H "User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0" -H "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" -H "Accept-Language:en-US,en;q=0.5" -H "Accept-Encoding:gzip, deflate" -H "Connection:keep-alive" -H "Content-Type:application/msbin1" -H "Content-Length:53" -H "Referer:http:/xx.xx.xx.xx/ClientBin/System_Management_Center.xap" -X POST -d @BackupConfighttp://tempuri.org/@sysTypesmVACS http://xx.xx.xx.xx/ClientBin/System_Management_Center-Web-Services-VACSDomainService.svc/binary/BackupConfig

Результаты выполнения этого в моем батнике говорит не может прочитать файл, это делает пустой пост. Я заметил, что копирование данных сообщения в веб-браузер показывает, что оно содержит больше, чем показано в wirehark. Он выглядит как @BackupConfighttp: //tempuri.org/@sysType™smVACS и когда искали Google возвращает @ BackupConfig% 08% 13http: //tempuri.org/@%07sysType%06smVACS

Я устал замещающие мой -d строка с возвращенными данными из google и командный файл возвращает «Не удалось прочитать данные из файла», BakupConfigC: \ users \ sean \ desktop \ genera ~ 1.BAT83http: //tempuri.org/@C: \ users \ sean \ Desktop \ роды ~ 1.bat7sysTypeC: \ Users \ Sean \ Desktop \ родов ~ 1.bat6smVACS», это делает пустой POST

Любая помощь очень ценится

+0

* обновление * Я обнаружил, что данные сообщения содержат символы Юникода. Расширенная версия данных post выглядит примерно так: '@ (Form Feed) BackupConfig (Backspace) (Device Control 3) http://tempuri.org/@ (Bell Ring) sysType (Acknowledge) smVACS (начало заголовка) ' Надеюсь, эта информация поможет кому-то! Благодаря! – smeagol002

ответ

0

проблема в том, что данные вашей POST.! начинается с символа @, который обрабатывается bu curl как указатель на локальный путь.

из this link

если вы начинаете данные с буквой @, остальное должно быть имя файла читать данные.

так, чтобы это исправить, вам нужно будет заменить @ с %40 которым кодированной версией @.

надеюсь, что это поможет.

+0

Спасибо за ответ! Я устал от вашей рекомендации, и командный файл не дал никаких ошибок, которые являются прогрессом! Однако с моими данными сообщения как '% 40BackupConfighttp: // tempuri.org/@ sysTypesmVACS' возвращает плохой запрос (контролируется wirehark) Wireshark показывает данные post' 0.BackupConfig..http: //tempuri.org/@ .sysType - .. smVACS.' Исходные данные для публикации, которые я пытаюсь имитировать, как показано wirehark, - это '@ .BackupConfig..http: //tempuri.org/@. sysType..smVACS.' – smeagol002

+0

вам также может понадобиться для добавления котировок в ваши данные, поскольку они содержат пробелы. –

+0

Я так ценю, что помощь помогает! @Pupa Rebbe, я попробовал ваше предложение, и у моего пакетного файла появилась ошибка. Предупреждение. Не удалось прочитать данные из файла «♀BackupConfi !! http: //tempura.org/@sysType-ö♠smVACS☺», это делает пустой POST. – smeagol002