1

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 サービス関数を呼び出すとき、彼らはそれが の型を返すことを期待しておりResponseResponse必要なクラスが CallBack 関数に受け取られています..

私の問題を明確にしたことを願っています

どんな助けでもいただければ幸いです

4

1 に答える 1