【问题标题】:How to POST to RESTful API with Windows Phone 8如何使用 Windows Phone 8 发布到 RESTful API
【发布时间】:2013-05-17 16:43:20
【问题描述】:

谁能告诉我一个工作示例,说明如何使用 Windows Phone 8POST JSON 到 RESTful API(例如 Web API) /em>?我有一个 GET 的工作示例,但似乎找不到任何 POST 的工作示例。我为 C# 找到的所有 POST 示例都不适用于 Windows Phone 8(由于精简的 .NET 框架)。

【问题讨论】:

标签: rest windows-phone-8


【解决方案1】:

好的,我终于想出了一个可行的解决方案,因此我想将其发布回来以确保完整性。但是,如果有人知道在 Windows Phone 8 中执行此操作的更好方法,我很乐意看到它!

public void SendPost(Uri uri, string json)
{
    var webClient = new WebClient();

    webClient.Headers[HttpRequestHeader.ContentType] = "application/json";
    webClient.UploadStringCompleted += this.sendPostCompleted;
    webClient.UploadStringAsync(uri, "POST", json);
}

private void sendPostCompleted(object sender, UploadStringCompletedEventArgs e)
{
    // Handle result
    Console.WriteLine("HTTP POST Result: {0}", e.Result);
}

【讨论】:

  • 我们如何在调用 Restful WebServices 时 POST id="xyz" 和 password="123" 作为参数?请帮帮我
  • WebClient 不是 Windows Phone 8.1 框架中的有效类。
  • @RahulSaksule,看stackoverflow.com/a/5401597/1948785传递参数
【解决方案2】:

最好的方法是使用 Restsharp:

昏暗客户端作为新的 RestSharp.RestClient("https://stuff.com/api/") Dim req As New RestSharp.RestRequest("dothings", Method.POST) req.RequestFormat = DataFormat.Json req.AddBody(使用 {.param1 = "stuff1", .param2="stuff2"} 的新 reqAuth) client.ExecuteAsync(req, Sub(res) Console.WriteLine(res.Content) 结束子)

【讨论】:

    【解决方案3】:
    string email = txtEmailAddress.Text;
                string password = txtPassword.Text;
                string confirmPassword = txtConfirmPassword.Text;
                string dd = txtDD.Text;
                string mm = txtMM.Text;
                string yyyy = txtYYYY.Text;
    
                UserDetails ud = new UserDetails
                {
                    DateofBirth = DateTime.Now.ToString(),
                    EmailAddress=email,
                    Password=password,
                    ProfileImage="",
                    UserID="0"
                };
    
                WebClient wc = new WebClient();
                wc.Headers["Content-Type"] = "application/json";
                MemoryStream ms = new MemoryStream();
                DataContractJsonSerializer serializertoUpload = new DataContractJsonSerializer(typeof(UserDetails));
                serializertoUpload.WriteObject(ms, ud);
                string data = Encoding.UTF8.GetString(ms.ToArray(), 0, (int)ms.Length);
                wc.UploadStringAsync(new Uri("<wcfserviceurl>"), "POST", data);
    

    这里是UserDetails类的定义

    public class UserDetails
        {
            public string UserID { get; set; }
            public string EmailAddress { get; set; }
            public string Password { get; set; }
            public string DateofBirth { get; set; }
            public string ProfileImage { get; set; }
        }
    

    【讨论】:

      【解决方案4】:
       public async void makeRequest(String resourceUri)
       {
           HttpClient httpClient = new HttpClient();
           try
           {
                HttpResponseMessage response = await httpClient.GetAsync(resourceUri);
           }
           catch (HttpRequestException hre)
           {
                Console.Write(hre.Message);
           }
           catch (TaskCanceledException)
           {
           }
      }
      

      记得添加 Nuget 包:httpclient

      【讨论】:

      • 这里没有详细说明如何为 Windows Phone 8 执行 POST 操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2014-01-03
      • 1970-01-01
      相关资源
      最近更新 更多