Как получить сообщение об успешном возвращении json после публикации моих данных json в Windows phone7 - PullRequest
0 голосов
/ 17 декабря 2011

Я новичок в разработке приложения для Windowsphone7, у меня есть небольшое приложение WP7, в котором я разместил данные json, после публикации сообщения об успехе он вернет сообщение об успехе и один идентификатор. Теперь я хочу получить сообщение об успехе и идентификатор . Я не знаю, как я могу получить возвращенные данные, пожалуйста, кто-нибудь Помогите мне перейти отсюда, пожалуйста. Здесь я публикую свой код, что я сделал, чтобы опубликовать JSON.

           private void SendOrder_Click(object sender, EventArgs e)
    {
        Double grossTotal = 0.0;
        List<MenuItem> mitems = new List<MenuItem>();

        foreach (var item in RestaurantApp.ViewModel.Generic.Orders)
        {
            grossTotal += Convert.ToDouble(item.OrderTotal.TrimStart(new char[] { '$' }));

        }

        DateTime MyDateTime = ((DateTime)DateToDialIn.Value).Date.Add(((DateTime)TimeToDialIn.Value).TimeOfDay);
        ViewModel.RootObject root = new ViewModel.RootObject()
        {
            order = new ViewModel.Orders()
            {
                LocationId = Convert.ToInt32(RestaurantApp.ViewModel.Generic.LocationPoco.LocationId),
                DeviceIdentifier = Convert.ToBase64String((byte[])Microsoft.Phone.Info.DeviceExtendedProperties.GetValue("DeviceUniqueId")),
                OrderContactName = txtName.Text,
                OrderContactPhone = txtPhone.Text,
                OrderContactEmail = txtEmail.Text,
                ShipMethod = RestaurantApp.ViewModel.Generic.ShipMethod,
                PickupDate = ((DateTime)DateToDialIn.Value).Date.Add(((DateTime)TimeToDialIn.Value).TimeOfDay).ToString(),
                Amount = grossTotal.ToString(),
                items = returnlist(mitems)
            },

        };

        string json = null;
        WebClient client = new WebClient();
        client.Headers["Content-Type"] = "application/json";

        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ViewModel.RootObject));
        using (MemoryStream stream = new MemoryStream())
        {
            serializer.WriteObject(stream, root);
            //stream.Flush();
            json = Encoding.UTF8.GetString(stream.ToArray(), 0, (int)stream.Length);
        }
        client.UploadStringCompleted += new UploadStringCompletedEventHandler(client_UploadStringCompleted);
        client.UploadStringAsync(new Uri("http://api.mybusinessapp.com/restaurant/PlaceOrder"), "POST", json);
        string responce = client.ResponseHeaders.ToString();
       }

      void client_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
    {

         RestaurantApp.ViewModel.Generic.Orders = null;
        RestaurantApp.ViewModel.Generic.ShipMethod = null;
        NavigationService.Navigate(new Uri("/Menu.xaml?LocationGUID=" + RestaurantApp.ViewModel.Generic.LocationPoco.LocationGuid, UriKind.Relative));
    } 

1 Ответ

0 голосов
/ 17 декабря 2011

Вы можете подготовить вспомогательный метод следующим образом:

    public static T JsonTo<T>(this string jsonString)
    {
        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T jsonObject;

        try
        {
            jsonObject = (T)ser.ReadObject(ms);
        }
        catch (System.Runtime.Serialization.SerializationException err)
        {
            ms.Close();
            return default(T);
        }
        ms.Close();
        return jsonObject;
    }

Предположим, ваш результат json представляет экземпляр YourResult:

    WebClient client = new WebClient();
    client.OpenReadCompleted += delegate(object sender, OpenReadCompletedEventArgs e)
        {
            Stream stream = e.Result;
            StreamReader reader = new StreamReader(stream);
            yourResult = reader.ReadToEnd().JsonTo<YourResult>();

        };

    client.OpenReadAsync(new Uri("http://your_api"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...