Динамический запрос веб-службы - PullRequest
0 голосов
/ 22 октября 2010

Я пытаюсь динамически отправить запрос SOAP на разные веб-сервисы.Каждый веб-сервис имеет свой собственный идентификатор, поэтому мне просто необходимо изменить идентификатор веб-сервиса в URL, например:

http://mywebservice.com/ID/servicedosomething

В любом случае, я не знаю, как это сделать вручную.Я не могу ссылаться на сервисы, потому что мне нужно было бы добавить в приложение множество веб-ссылок, что, кажется, не очень хорошо.

В любом случае, я просто хочу знать, как создать SOAPзапросить, отправить его и получить результат от сервиса.Кстати, я проверил другие решения подобных вопросов, и ни один из них не работал для меня, может быть, фреймворк WP7 или что-то.

Спасибо!

1 Ответ

1 голос
/ 22 октября 2010

Исходя из моего опыта, очень легко проектировать и создавать приложения для Windows Phone с помощью веб-сервисов RESTful. В ситуации, когда у вас есть только веб-службы SOAP XML для работы, вам потребуется выполнить некоторую работу в приложении, чтобы подготовить запрос, отправить его и проанализировать ответ.

Вы можете сохранить URL-адрес веб-службы в виде строки "template", например, так: *

string wsUrlTemplate = "http://mywebservice.com/{0}/servicedosomething";

Когда вы собираетесь отправить запрос, просто отформатируйте строку -

string wsUrl = string.Format(wsUrlTemplate, webServiceID);

Если у вас есть формат запроса SOAP XML, сохраните его как шаблон. Когда вам нужно выполнить запрос, замените заполнители фактическими значениями и отправьте запрос (с опцией POST, если это то, что ожидают веб-службы). Типичный шаблон запроса SOAP XML может выглядеть следующим образом -

string xmlRequestTemplate = "
<?xml version="1.0" encoding="utf-8" ?>
<Customer>
   <CustomerID>{0}</Customer>
</Customer>"

Чтобы подготовить XML-запрос, вы применяете тот же подход, что и выше, - формат строки xmlRequestTemplate и добавьте CustomerID. Для выдачи запроса используйте HttpWebRequest для асинхронной выдачи запроса и в обработчике ответа проанализируйте XML-ответ.

var request = HttpWebRequest.Create(wsUrl);
var result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);

private void ResponseCallback(IAsyncResult result)
{
  var request = (HttpWebRequest)result.AsyncState;
  var response = request.EndGetResponse(result);

  using (var stream = response.GetResponseStream())
  using (var reader = new StreamReader(stream))
  {
    var contents = reader.ReadToEnd(); 
    // Parse the XML response
  }
}

Надеюсь, это даст вам некоторые идеи для продолжения.

indyfromoz

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...