Я могу использовать службу асинхронно, как показано ниже:
public void PostMethodResponse()
{
try
{
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(_url);
myRequest.Method = "POST";
myRequest.Headers["SOAPAction"] = _action;
myRequest.ContentType = "text/xml; charset=utf-8";
myRequest.Accept = "text/xml";
myRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), myRequest);
}
catch (Exception ex)
{
throw ex;
}
}
private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
System.IO.Stream postStream = request.EndGetRequestStream(asynchronousResult);
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(_postData);
postStream.Write(byteArray, 0, byteArray.Length);
postStream.Close();
// Start the asynchronous operation to get the response
request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}
catch (Exception ex)
{
throw ex;
}
}
private void GetResponseCallback(IAsyncResult asynchronousResult)
{
try
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
// Close the stream object
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse
response.Close();
_response = responseString;
}
catch (Exception ex)
{
_response = ex.Message;
}
}
Я вызываю функцию PostMethodResponse () (которая находится в классе модели) из класса ViewModel. Я могу получить ответ в функции GetResponseCallback, но как я могу вернуть этот ответ в ViewModel, а затем в View (Front End .xaml). Чтобы получить ответ, мы можем запустить функцию GetResponseCallback события, а затем перехватить его класс ViewModel и запустить то же событие ViewModel и перехватить его View, но это не правильный путь.
Пожалуйста, помогите мне понять веб-сервисы вызова архитектуры MVVM.
Заранее спасибо.