синтаксический анализ возврата XML после метода post - PullRequest
0 голосов
/ 21 июля 2011

Я использую post для отправки параметра на сервер и получения результата в строке, как мне разобрать этот результат и связать его со списком?Кажется, что (по какой-то причине) я не могу вывести строку в текстовый блок или окно сообщения.Для разбора XML я использую XDocument (который принимает поток в параметре). Мой код следующий:

    private static void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    {
        string post = "track=love";
//       post = HttpUtility.UrlEncode(post);
        Console.WriteLine(post);
        try
        {
            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

            // End the operation
            Stream postStream = request.EndGetRequestStream(asynchronousResult);

            // Convert the string into a byte array.
            byte[] postBytes = Encoding.UTF8.GetBytes(post);

            // Write to the request stream.
            postStream.Write(postBytes, 0, postBytes.Length);
            postStream.Close();

            // Start the asynchronous operation to get the response
            request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    private static void GetResponseCallback(IAsyncResult asynchronousResult)
    { 

            HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

            // End the operation
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);

            HttpStatusCode rcode = response.StatusCode;
            Stream streamResponse = response.GetResponseStream(); 
            StreamReader streamRead = new StreamReader(streamResponse);

        //THIS ALWAYS RETURN "" VALUE, EXPECT TO RETURN XML STRING               
            string str = streamRead.ReadToEnd();

            //Console.WriteLine(responseString);
            // Close the stream object
            streamResponse.Close();
            streamRead.Close();
            // Release the HttpWebResponse
            response.Close();             
    }

, и я хочу использовать XDocument для разбора данных следующим образом:

 XDocument xdoc = XDocument.Load(str);

                    var data = from query in xdoc.Descendants("tracks").Elements("item")
                               select new searchResult
                               {
                                   artist = (string)query.Element("artist"),
                                   album = (string)query.Element("album"),
                                   track = (string)query.Element("track"),
                              //   artistA = (string)query.Element("artists").Element("artist"),
                               };
                    listBox1.ItemsSource = data;

                    var data1 = from query in xdoc.Descendants("artists").Elements("item")
                               select new searchResult
                               {
                                 artistA = (string)query.Element("artist"),
                               };
                    listBox2.ItemsSource = data1;
...