我正在编写Windows Phone 8应用程序,该应用程序应该将GET + POST请求发送到服务器并解析答案。

我用来发送请求和获取响应的代码如下(它是在单独的静态类中编写的):

                // server to POST to
        string url = "http://myserver.com/?page=hello&param2=val2";

        // HTTP web request
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
        httpWebRequest.ContentType = "application/x-www-form-urlencoded";
        httpWebRequest.Method = "POST";

        // Write the request Asynchronously
        using (var stream = await Task.Factory.FromAsync<Stream>(httpWebRequest.BeginGetRequestStream,
                                                                 httpWebRequest.EndGetRequestStream, null))
        {
            // Create the post data
            string postData = "pseudo=pseudo&titre=test&texte=\"Contenu du message\"";
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);

            // Write the bytes to the stream
            await stream.WriteAsync(byteArray, 0, byteArray.Length);
            stream.Close();
            IAsyncResult ar = httpWebRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), httpWebRequest);

        }



    }

    private static void GetResponsetStreamCallback(IAsyncResult callbackResult)
    {
        HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState;
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult);
        using (StreamReader httpWebStreamReader = new StreamReader(response.GetResponseStream()))
        {
            string result = httpWebStreamReader.ReadToEnd();
            //For debug: show results
            System.Diagnostics.Debug.WriteLine(result);



        }


我的问题是:我不知道如何在我的应用程序(或坦率地说,我的应用程序中的任何其他方法)的背后代码中返回此答案(字符串结果)。

我该怎么办?

最佳答案

您可以尝试以下代码,

string url = "http://myserver.com/?page=hello&param2=val2";

    // HTTP web request
    var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
    httpWebRequest.ContentType = "application/x-www-form-urlencoded";
    httpWebRequest.Method = "POST";
    httpWebRequest.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), webRequest);
    }

    private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;

        using (var postStream = webRequest.EndGetRequestStream(asynchronousResult))
        {
           //send yoour data here
        }
        webRequest.BeginGetResponse(new AsyncCallback(GetResponseCallback), webRequest);
    }

    void GetResponseCallback(IAsyncResult asynchronousResult)
    {

        try
        {
            HttpWebRequest myrequest = (HttpWebRequest)asynchronousResult.AsyncState;
            using (HttpWebResponse response = (HttpWebResponse)myrequest.EndGetResponse(asynchronousResult))
            {
                System.IO.Stream responseStream = response.GetResponseStream();
                using (var reader = new System.IO.StreamReader(responseStream))
                {
                    data = reader.ReadToEnd();
                }
                responseStream.Close();
            }
        }
        catch (Exception e)
        {
  //Handle Exception
            }
            else
                throw;
        }
    }

10-07 19:10
查看更多