如何使用 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 移动设备?