Web Service

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
Trv
OTRS Новобранец
Сообщения: 24
Зарегистрирован: 07 мар 2012, 12:29

Web Service

Сообщение Trv » 15 окт 2013, 14:39

Создал веб сервис GenericTicketConnector.
Создал несколько Operations.

При попытке зайти браузером по адресу '/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnector'
получаю ошибку:

Length Required
No data provided
Request could not be processed (2013-10-15 14:25:53.000, error)
Length Required
Returning provider data to remote system (HTTP Code: 411) (2013-10-15 14:25:53.000, error)
Length Required

Попробовал добавить ссылку на службу в Visual Studio, получил ошибку:

Произошла ошибка при загрузке ''http://мой сайт/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnector/_vti_bin/ListData.svc/$metadata''.
Отказ при выполнении запроса с состоянием HTTP 411: Length Required.
Метаданные содержат неразрешимую ссылку: "http://мой сайт/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnector".
Запрос HTTP не разрешен для схемы аутентификации клиента "Anonymous". От сервера получен заголовок аутентификации "Negotiate,NTLM,Basic realm="user1"".
Удаленный сервер возвратил ошибку: (401) Несанкционированный.
Если служба определена в текущем решении, попробуйте построить решение и добавить ссылку на службу еще раз.

Trv
OTRS Новобранец
Сообщения: 24
Зарегистрирован: 07 мар 2012, 12:29

Re: Web Service

Сообщение Trv » 24 окт 2013, 11:20

В общем, насколько я разобрался, это не баг, а фича. Веб служба Otrs не генерирует при обращении wsdl, поэтому Visual Studio не может создать класс-обертку. Для того что бы создать новую заявку приходится писать примерно такой код:

Код: Выделить всё

 string login = Context.User.Identity.Name;
            string userName = login.Split('\\')[1];

            string XMLData =string.Format(@"<?xml version='1.0' encoding='UTF-8'?>
<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' 
xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
soap:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' 
xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
<soap:Body>
    <TicketCreate xmlns='WS'>          
         <UserLogin>''</UserLogin>
         <Password>''</Password>
           <Ticket>
                <Title>Web Service Test</Title>
                <CustomerUser>{0}</CustomerUser>
                <Queue>Департамент ИТ</Queue>
                <State>new</State>
                <PriorityID>3</PriorityID>
</Ticket>
         <Article>
             <Subject>Web Service Test</Subject>
             <Body>Это тест</Body>
             <ContentType>text/plain; charset=utf8</ContentType>
        </Article>
    </TicketCreate >
</soap:Body>
</soap:Envelope>", userName);


            //Builds the connection to the WebService.
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://мой сайт/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnector");
            req.Headers.Add("SOAPAction", "\"http://мой сайт/TicketConnector/\"");
            req.ContentType = "text/xml; charset=\"utf-8\"";
            req.Accept = "text/xml";
            req.Method = "POST";
            req.Credentials = CredentialCache.DefaultCredentials;

            using (Stream stm = req.GetRequestStream())
            {
                using (StreamWriter stmw = new StreamWriter(stm))
                {
                    stmw.Write(XMLData);
                }
            }
 
            WebResponse response = req.GetResponse();
  
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string responseFromServer = reader.ReadToEnd();

            reader.Close();
            dataStream.Close();
            response.Close();
Довольно долго разбирался, может кому-то пригодится.

Warlib
OTRS Новобранец
Сообщения: 5
Зарегистрирован: 04 янв 2015, 11:19

Re: Web Service

Сообщение Warlib » 04 янв 2015, 11:25

Попробовал указанный код, ошибка та-же самая "Length required". Указание размера XML запроса в Request от ошибки не избавляет. Просьба скинуть пример сырцов реализации Web Service для OTRS для Visual Studio.

Ответить