如何使用 Windows Phone 8 发布到 RESTful API

Posted

技术标签:

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

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

【问题讨论】:

这可能会有所帮助:***.com/questions/14698879/… 【参考方案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,看***.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 操作。

以上是关于如何使用 Windows Phone 8 发布到 RESTful API的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Windows 商店中的 Windows Phone 应用程序(8.1 XAML)迁移到 8.1 Silverlight?

如何将 Windows Phone 8.1 应用程序部署到 Windows 10 移动设备?

如何将 C# 中的 Image 对象制作到 Windows Phone 8.1

在 Windows Phone 8.1 上播放 GIF

如何在windows phone 8的列表框中添加页脚

如何使用 PushSharp 为 Windows Phone 8 设置徽章值