Я пытаюсь написать консольное приложение на c #, которое использует веб-сервис, работающий на tomcat, для выполнения метода «PUT» с помощью XML-файла. - PullRequest
0 голосов
/ 04 июня 2018
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);

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

ОШИБКА javax.xml.bind.UnmarshalException \ n - со связанным исключением: \ n [org.xml.sax.SAXParseException;номер строки: 1;columnNumber: 1;Содержание не допускается в прологе.]

1 Ответ

0 голосов
/ 05 июня 2018
    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);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...