[英]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.