在Windows Phone 8上获取HttpWebRequest的响应

时间:2015-04-14 20:34:48

标签: c# windows-phone-8 http-post

我正在尝试从Windows Phone应用程序对网站进行WebRequest。 但对我来说,从服务器获得响应也很重要。 这是我的代码:

            Uri requestUri = new Uri(string.Format("http://localhost:8099/hello/{0}", metodo));
        HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
        httpWebRequest.ContentType = "application/xml; charset=utf-8";
        httpWebRequest.Method = "POST";

        using (var stream = await Task.Factory.FromAsync<Stream>(httpWebRequest.BeginGetRequestStream,
                                                     httpWebRequest.EndGetRequestStream, null))
        {
            string xml = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Ahri</string>";

            byte[] xmlAsBytes = Encoding.UTF8.GetBytes(xml);

            await stream.WriteAsync(xmlAsBytes, 0, xmlAsBytes.Length);
        }

不幸的是,我不知道如何从服务器获得响应。 有没有人有想法?

提前致谢。


感谢@max我找到了解决方案并想在上面分享。 以下是我的代码的样子:

            string xml = "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">Claor</string>";
        Uri requestUri = new Uri(string.Format("http://localhost:8099/hello/{0}", metodo));
        string responseFromServer = "no response";

        HttpWebRequest httpWebRequest = HttpWebRequest.Create(requestUri) as HttpWebRequest;
        httpWebRequest.ContentType = "application/xml; charset=utf-8";
        httpWebRequest.Method = "POST";



        using (Stream requestStream = await httpWebRequest.GetRequestStreamAsync())
        {
            byte[] xmlAsBytes = Encoding.UTF8.GetBytes(xml);

            await requestStream.WriteAsync(xmlAsBytes, 0, xmlAsBytes.Length);
        }

        WebResponse webResponse = await httpWebRequest.GetResponseAsync();
        using (var reader = new StreamReader(webResponse.GetResponseStream()))
        {
            responseFromServer = reader.ReadToEnd();
        }

我希望将来可以帮助某人。

1 个答案:

答案 0 :(得分:2)

  

对于Windows手机应用中的新用户来说,这是一个非常常见的问题   发展。有几个网站提供了教程   同样但我想在这里给出一个小答案。

windows phone 8 xaml / runtime 中,您可以使用 HttpWebRequest WebClient 来完成此操作。

  

基本上 WebClient HttpWebRequest 的包装。

如果您有一个小请求,那么用户HttpWebRequest。它就像这样

HttpWebRequest request = HttpWebRequest.Create(requestURI) as HttpWebRequest;
WebResponse response = await request.GetResponseAsync();
using (var reader = new StreamReader(response.GetResponseStream()))
{
    string responseContent = reader.ReadToEnd();
    // Do anything with you content. Convert it to xml, json or anything.
}

虽然这是一个获取请求,但我发现你想要发布一个帖子请求,你必须修改几个步骤才能实现。

Visit this place for post request.

如果您需要Windows Phone教程,可以转到here. He writes awesome tuts.