Создал веб сервис 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) Несанкционированный.
Если служба определена в текущем решении, попробуйте построить решение и добавить ссылку на службу еще раз.
Web Service
Модератор: ykolesnikov
Re: Web Service
В общем, насколько я разобрался, это не баг, а фича. Веб служба 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();
Re: Web Service
Попробовал указанный код, ошибка та-же самая "Length required". Указание размера XML запроса в Request от ошибки не избавляет. Просьба скинуть пример сырцов реализации Web Service для OTRS для Visual Studio.