![](/img/trans.png)
[英]Web browser does not show web pages properly in Windows Phone 8 application
[英]Windows phone application does not work properly when I'm trying to call a web api
我正在开发一个简单的Windows Phone 8应用程序。
我不使用MVVM
,这非常简单。
我有一个按钮,当我按下它时,我想向数据库中添加一些数据(使用post方法)。
Web API
是在asp.net
制作的,并且可以正常工作,因为我使用了fiddler
和控制台应用程序进行了测试。
该按钮后面的代码如下:
private void Button_Click(object sender, RoutedEventArgs e)
{
HttpClient client = new HttpClient();
string baseUrl = "myWebApiLink";
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string serviceUrl;
serviceUrl = "api/People";
var anEmployee = new People()
{
FirstName = "Windows",
LastName = "Phone",
Age = 8
};
HttpResponseMessage response;
response = client.PostAsJsonAsync(serviceUrl, anEmployee).Result; //the problem
if (response.IsSuccessStatusCode)
{
//some success messages
}
else
{
//some fail messages
}
UriKind.Relative));
}
在生产线上
response = client.PostAsJsonAsync(serviceUrl, anEmployee).Result;
该应用程序只是被阻止。
它不会引发异常,它只会停留在该行上。
有任何想法吗?
先感谢您!
实际上,我不认为这句话说的是,您正在调用异步方法,这意味着您的代码将继续执行,并且不等待响应。 通过添加异步来更改方法签名,然后等待调用重新启动将起作用。 这是修改您的代码。
private async void Button_Click(object sender, RoutedEventArgs e)
{
HttpClient client = new HttpClient();
string baseUrl = "myWebApiLink/";
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string serviceUrl;
serviceUrl = "api/People";
var anEmployee = new People()
{
FirstName = "Windows",
LastName = "Phone",
Age = 8
};
var request = new HttpRequestMessage(HttpMethod.Post, serviceUrl);
var requestContent = anEmployee; //this value is a string, check the format on your server
request.Content = new StringContent(requestContent, Encoding.UTF8, "application/json");
HttpResponseMessage response;
response = await client.SendAsync(request); //no longer the problem
if (response.IsSuccessStatusCode)
{
//some success messages
}
else
{
//some fail messages
}
}
使用异步按钮客户端并等待异步调用后...这是方法。
private async void Button_Click(object sender, RoutedEventArgs e)
{
HttpClient client = new HttpClient();
string baseUrl = "myWebApiLink";
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string serviceUrl;
serviceUrl = "api/People";
var anEmployee = new People()
{
FirstName = "Windows",
LastName = "Phone",
Age = 8
};
HttpResponseMessage response;
response = await client.PostAsJsonAsync(serviceUrl, anEmployee).Result;
if (response.IsSuccessStatusCode)
{
//some success messages
}
else
{
//some fail messages
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.