URLに非同期的に投稿するWebサービスがあります
public Response uploadXMLData(string destinationUrl, string requestXml,Request req)
{
try
{
Response resp=new Response();
System.Uri uri = new System.Uri(destinationUrl);
using (WebClient client = new WebClient())
{
client.UploadStringCompleted
+= new UploadStringCompletedEventHandler(UploadStringCallback);
client.UploadStringAsync(uri, "POST",requestXml,req);
}
}
catch (Exception ex)
{}
return resp;
}
public void UploadStringCallback(object sender, UploadStringCompletedEventArgs e)
{
Response resp=new Response();
Request req = new Request();
try
{
if (e.Error != null)
{
object objException = e.Error.GetBaseException();
Type _type = typeof(WebException);
if (_type != null)
{
WebException objErr = (WebException)e.Error.GetBaseException();
WebResponse rsp = objErr.Response;
using (Stream respStream = rsp.GetResponseStream())
{
req= (Request)e.UserState;
resp=Utilities.ParseWithoutSoapEnv(respStream);
}
}
else
{
Exception objErr = (Exception)e.Error.GetBaseException();
throw objErr;
}
}
else
{
//Parse e.Result
}
}
catch (Exception ex)
{}
}
呼び出された関数Utilities.ParseWithoutSoapEnv(respStream);
は型を返しますResponse
私がやりたいのは、その関数から応答を取得し、それを戻り値にすることですuploadXMLData
しかし、CallBack 関数の戻り値の型を変更できないので、どうすればよいかわかりません。
誰かが私の Web サービス関数を呼び出すとき、彼らはそれが の型を返すことを期待しておりResponse
、Response
必要なクラスが CallBack 関数に受け取られています..
私の問題を明確にしたことを願っています
どんな助けでもいただければ幸いです