0

Windows Phone からサーバーへの HTTP 要求を開始する次の C# クラスがあります。

public class Request
{
    public string data;
    public string result;

    public Request()
    {

    }

    public void doRequest(string parameters, string URL)
    {
        data = parameters;

        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(URL);
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);
    }

    public void GetRequestStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState;
        Stream postStream = myRequest.EndGetRequestStream(callbackResult);
        byte[] byteArray = Encoding.UTF8.GetBytes(data);

        postStream.Write(byteArray, 0, byteArray.Length);
        postStream.Close();

        myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest);
    }

    public void GetResponsetStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);

        StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream());
        result = httpWebStreamReader.ReadToEnd();
    }

ここで、メイン クラスで doRequest メソッドを呼び出して、Windows Phone から HTTP 要求を行います。

Request req = new Request();
req.doRequest("function=LogIn&username=" + username + "&password=" + password, "http://localhost:4000/Handler.ashx");

このメソッドを呼び出すとき、doRequest メソッドではなく GetResponsetStreamCallback メソッドで受信されるため、サーバーから結果 (結果変数) を取得するにはどうすればよいですか?

4

1 に答える 1