Я пытаюсь написать консольное приложение на C#, которое использует веб-службу, работающую на tomcat, для выполнения метода PUT с файлом xml

public static String TransferMessage(String uri, String resource, 
                                     String xml_data, Method httpmethod, 
                                     ReturnType returnType) 
{
    try
    {
        WebRequest request = WebRequest.Create(uri + resource);

        request.Method = httpmethod.ToString();
        request.ContentType = @"application/xml;";

        //request.Headers.Add("Token", token);

        request.Timeout = Convert.ToInt32((new TimeSpan(1, 0, 0)).TotalMilliseconds);
        request.ContentLength = Encoding.UTF8.GetByteCount(xml_data);

        if (httpmethod != Method.GET)
            using (Stream stream = request.GetRequestStream())
            {
                stream.Write(Encoding.UTF8.GetBytes(xml_data), 0,
                    Encoding.UTF8.GetByteCount(xml_data));

                stream.Flush();
                stream.Close();
            }

         return getResponseContent(request.GetResponse());
    }
    catch(Exception e)
    {
        Console.WriteLine(e);
    }
    return null;
}

Основной метод:

    var res_xml = MethodHelper.TransferMessage(endpoint, "/" + resource,xml,
                           MethodHelper.Method.PUT,
                          MethodHelper.ReturnType.XML);

Я получаю эту ошибку

ERROR javax.xml.bind.UnmarshalException\n - with linked exception:\n[org.xml.sax.SAXParseException; line Number: 1; columnNumber: 1; Content is not allowed in prolog.]

Что заставляет вас думать, что ошибку, которая явно исходит из Java-части этого чата, можно решить, показав нам часть C#?

spender 04.06.2018 13:10

Это означает, что XML имеет неправильный формат или тело ответа вообще не является XML-документом. Добавьте свой xml для проверки.

Mate 04.06.2018 13:18
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
32
1

Ответы 1

    try{
    string contend = "";
            using (var streamReader = new StreamReader(new FileInfo(@"C:\Users\absmbez\Desktop\temp\upload.xml").OpenRead()))
            {
                contend = streamReader.ReadToEnd();
            }
            HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(url);
            webrequest.Method = "PUT";
            webrequest.ContentType = "application/xml";
            Encoding enc = System.Text.Encoding.GetEncoding("utf-8");
            byte[] requestData = enc.GetBytes(contend);
            webrequest.ContentLength = requestData.Length;

            using (var stream = webrequest.GetRequestStream())
            {
                stream.Write(requestData, 0, requestData.Length);
            }

            HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse();

            StreamReader responseStream = new StreamReader(webresponse.GetResponseStream(), enc);
            string result = string.Empty;
            result = responseStream.ReadToEnd();
            webresponse.Close();
            return result;
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }

Другие вопросы по теме