|
1с multipart form-data | ☑ | ||
---|---|---|---|---|
0
SuperMario
08.12.19
✎
20:25
|
Друзья, всем доброго времени суток.
Есть код на C Sharp , который отправляет POST запрос на WEB сервер. public string ImportWriteoffAct(WAI_WriteOffAct Act) { string str2; string input = ""; try { string path = FlagmanHelper.AddFinalBackSlash(Application.StartupPath) + @"data\import\"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } str2 = Path.Combine(path, "Act" + Act.Number.ToString() + ".txt"); StreamWriter writer = new StreamWriter(str2, false, Encoding.Default); writer.WriteLine("Article;Name;Units;Amount;"); int num = 0; while (true) { if (num >= Act.Products.Count) { writer.Close(); break; } writer.WriteLine(Act.Products[num].ToCsvLine()); num++; } } catch (Exception exception) { this.LogManager.AddToErrorLog("Ошибка импорта акта списания " + Act.Number.ToString() + ": " + exception.Message); return null; } FileStream stream = new FileStream(str2, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); stream.Close(); Dictionary<string, object> postParameters = new Dictionary<string, object> { { "documentType", "WriteOffDocument" }, { "fileName", new WAI_FileParameter(buffer, Path.GetFileName(str2), "application/vnd.ms-excel") }, { "dateIncoming", Act.Date.ToShortDateString() }, { "documentNumber", Act.Number.ToString() }, { "store", Act.StoreId }, { "toAccount", Act.AccountId }, { "action", "Import" } }; HttpWebResponse response = MultipartFormDataPost("http://" + this.Host + ":" + this.Port + "/" + this.Server + "/service/import/importDocuments.jsp", "Ghost", postParameters, this.Login, this.Password); string str6 = new StreamReader(response.GetResponseStream()).ReadToEnd(); response.Close(); input = str6.Replace("\n", ""); if (input != "") { if (input.IndexOf("<span") >= 0) { input = input.Substring(input.IndexOf("<span")); } else if (input.IndexOf("<pre") >= 0) { input = input.Substring(input.IndexOf("<pre")); } input = Regex.Replace(input, "<.*?>", " "); } return input; Пытаюсь этот код реализовать на 1С. Собрал текст в формате multipart form-data В заголовок добавляю Заголовки= Новый Соответствие(); boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", ""); Заголовки.Вставить("Content-Type", "multipart/form-data; boundary=" + boundary); Не пойму, как передать тело запроса. В заголовках? |
|||
1
Cthulhu
08.12.19
✎
20:47
|
УстановитьТелоИзСтроки
|
|||
2
Cthulhu
08.12.19
✎
20:49
|
HTTPЗапрос = Новый HTTPЗапрос( <path> , Заголовки );
HTTPЗапрос.УстановитьТелоИзСтроки( СтрJSON , КодировкаТекста.UTF8 ); // ну. например )) |
|||
3
SuperMario
08.12.19
✎
21:52
|
(1)Делал.
file is not specified Я поэтому и выложил код на C Charp |
|||
4
Cthulhu
08.12.19
✎
21:55
|
(3): нунэнаюу.. у менф жсон нормально укладывается и работает.
|
|||
5
Юрий Лазаренко
08.12.19
✎
22:03
|
||||
6
SuperMario
08.12.19
✎
22:13
|
(5) читал.
Там только описания создания составного (multipart) HTTP-сообщения Вопрос , как передать это все чудо? |
|||
7
SuperMario
08.12.19
✎
23:05
|
Поставил Fiddler WEB Debugger и посмотрел тело запроса.
Оно отличается от того, что шлет C Charp. Завтра сравню и попробую подстроиться. |
|||
8
SuperMario
09.12.19
✎
17:05
|
Нашел ошибку в коде.
Все банально- не так кодировка текста. Я использовал UTF-8, а методом научного тыка оказалась ANSI тема закрыта) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |