Windows phone 8 将数据发布到web服务HttpWebRequest Windows Phone 8

Windows phone 8 将数据发布到web服务HttpWebRequest Windows Phone 8,windows-phone-8,Windows Phone 8,今天,我一直在尝试将此示例改为POST数据,而不是所提供的示例GET,但没有成功 我已替换了该行: request.Method = HttpMethod.Get; 与 但是找不到任何方法可以让我在我想发布的内容流 此HttpWebRequest似乎比其他方式(例如发送委托函数来处理响应)更简洁 在Wigley先生的示例代码中,我可以看到POST,所以它一定是可能的 public static class HttpMethod { public static stri

今天,我一直在尝试将此示例改为POST数据,而不是所提供的示例GET,但没有成功

我已替换了该行:

request.Method = HttpMethod.Get;

但是找不到任何方法可以让我在我想发布的内容流

此HttpWebRequest似乎比其他方式(例如发送委托函数来处理响应)更简洁

在Wigley先生的示例代码中,我可以看到POST,所以它一定是可能的

 public static class HttpMethod
    {
        public static string Head { get { return "HEAD"; } }
        public static string Post { get { return "POST"; } }

我不久前写过这门课

  public class JsonSend<I, O>
    {
        bool _parseOutput;
        bool _throwExceptionOnFailure;

        public JsonSend()
            : this(true,true)
        {

        }

        public JsonSend(bool parseOutput, bool throwExceptionOnFailure)
        {
            _parseOutput = parseOutput;
            _throwExceptionOnFailure = throwExceptionOnFailure;
        }

        public async Task<O> DoPostRequest(string url, I input)
        {
            var client = new HttpClient();
            CultureInfo ci = new CultureInfo(Windows.System.UserProfile.GlobalizationPreferences.Languages[0]);

            client.DefaultRequestHeaders.Add("Accept-Language", ci.TwoLetterISOLanguageName);
            var uri = new Uri(string.Format(
                url,
                "action",
                "post",
                DateTime.Now.Ticks
                ));

            string serialized = JsonConvert.SerializeObject(input);

            StringContent stringContent = new StringContent(
                serialized,
                Encoding.UTF8,
                "application/json");

            var response = client.PostAsync(uri, stringContent);

            HttpResponseMessage x = await response;
            HttpContent requestContent = x.Content;
            string jsonContent = requestContent.ReadAsStringAsync().Result;
            if (x.IsSuccessStatusCode == false && _throwExceptionOnFailure)
            {
                throw new Exception(url + " with POST ends with status code " + x.StatusCode + " and content " + jsonContent);
            }

            if (_parseOutput == false){
                return default(O);
            }

            return JsonConvert.DeserializeObject<O>(jsonContent);
        }

        public async Task<O> DoPutRequest(string url, I input)
        {
            var client = new HttpClient();
            CultureInfo ci = new CultureInfo(Windows.System.UserProfile.GlobalizationPreferences.Languages[0]);                    

            client.DefaultRequestHeaders.Add("Accept-Language", ci.TwoLetterISOLanguageName);
            var uri = new Uri(string.Format(
                url,
                "action",
                "put",
                DateTime.Now.Ticks
                ));

            string serializedObject = JsonConvert.SerializeObject(input);
            var response = client.PutAsync(uri,
            new StringContent(
                serializedObject,
                Encoding.UTF8,
                "application/json"));

            HttpResponseMessage x = await response;
            HttpContent requestContent = x.Content;
            string jsonContent = requestContent.ReadAsStringAsync().Result;

            if (x.IsSuccessStatusCode == false && _throwExceptionOnFailure)
            {
                throw new Exception(url + " with PUT ends with status code " + x.StatusCode + " and content " + jsonContent);
            }

            if (_parseOutput == false){
                return default(O);
            }

            return JsonConvert.DeserializeObject<O>(jsonContent);
        }
    }
然后,当我想调用它时,我可以按如下方式使用它:

JsonSend<User, RegistrationReceived> register = new JsonSend<User, RegistrationReceived>();
RegistrationReceived responseUser = await register.DoPostRequest("http://myurl", user);
JsonSend<User, RegistrationReceived> register = new JsonSend<User, RegistrationReceived>();
RegistrationReceived responseUser = await register.DoPostRequest("http://myurl", user);