Это относится конкретно к .NET. И я решил использовать ссылку на веб-службу вместо веб-службы ... Я думаю, что мои вопросы, приведенные ниже, действительно относятся к любой ситуации, и я хочу попытаться получить общее представление об этом.
Итак, вот проблема для меня. Позвольте мне сначала объяснить, откуда я. В одном из прошлых проектов я уже говорил с парой API, создавая ручные классы, такие как, например, GetPicturesRequest.cs и GetPicturesResponse.cs, которые будут содержать состояние для меня. Я бы имел базовый класс с именем Request.cs, который выполнял фактическую отправку вызова API:
Stream requestStream;
Stream responseStream;
XmlDocument doc = new XmlDocument();
doc = CreateRequestXML();
// Determins if API call needs to use a session based URI
string requestURI = UseAuthURI == true ? _requestURIAuthBased + JSessionID : _requestURI;
byte[] data = XmlUtil.DocumentToBytes(doc);
// Create the atual Request instance
HttpWebRequest request = CreateWebRequest(requestURI, data.Length);
request.ContentLength = data.Length;
request.KeepAlive = false;
request.Timeout = 30000;
// Send the Request
requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
requestStream.Close();
Теперь я хочу использовать ссылку на веб-сервис. Поэтому я указал и создал новую ссылку на https://www.sandbox.paypal.com/wsdl/PayPalSvc.wsdl в VS 2008. Теперь у меня есть веб-ссылка.
Теперь у меня есть эти вопросы, когда я впервые пользуюсь веб-службами, а не вручную, как при использовании стороннего API:
1) Как указать параметры заголовка? Например, некоторые API требуют, чтобы вы отправляли хэш (подпись), sessionID, имя пользователя, пароль, вы называете его вместе с запросом вызова метода API. Как указать это с помощью прокси-класса веб-службы?
2) Как обрабатываются объекты запроса / ответа или мне не нужно беспокоиться об этом сейчас, когда я использую веб-сервис / ссылку? Я имею в виду, нужно ли мне еще создавать объект запроса и как я получу ответ?
3) Когда я получаю ответ, содержит ли прокси-класс свое состояние или мне все еще нужно создать класс для хранения состояния возвращаемых данных из ответа на вызов метода API при использовании веб-интерфейса услуги / ссылки?
4) Когда бы я захотел вместо этого просто создать собственный код, как я делал раньше, и не использовать опцию веб-сервисов / ссылок с WSDL? ... по сути, создавая собственные прокси-классы, объекты запросов объекты ответа, все? Вместо того, чтобы VS выкладывал веб-ссылку на основе WSDL? Это потому, что если это не сторонний API на основе SOAP? Это потому, что сторонний API не предоставляет WSDL, тогда вы вынуждены сами кодировать обертки?