У меня проблема, которую я не могу понять с помощью своего приложения WindowsPhone 8.1. На моей стороне клиента я пишу код для извлечения значений из базы данных, которую я запрашиваю. Хотя мне удалось успешно сделать это с моими объектами Bars, я не могу заставить свои группы работать. Странно то, что кажется, что и прошло, и застревает в создании моего объекта HttpResponseMessage. Вот код:Ошибка HttpResponseMessage в коде клиента WP8.1
private void refresh_Click(object sender, RoutedEventArgs e)
{
GetTeams();
//getTeamById(10);
}
public async void GetTeams()
{
using (var client = new HttpClient())
{
teamsListBox.Items.Add("using block entered");
client.BaseAddress = new Uri("http://nflff.azurewebsites.net");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
teamsListBox.Items.Add("client's defaultrequestheaders done");
HttpResponseMessage response = await client.GetAsync("api/bars");//not getting past here
teamsListBox.Items.Add("right after response"); //not printing
if (response.IsSuccessStatusCode)
{
teamsListBox.Items.Add("if entered");
//IList<Teams> Teams = await response.Content.ReadAsAsync<IList<Teams>>();
string teams = await response.Content.ReadAsStringAsync();
int start = 0;
while (start != -1)
{
start = stringToTeam(teams, start); //throwing exception inside stringToTeams, which isn't being called anywhere else
}
}
teamsListBox.Items.Add(Teams.TeamsList.Count);
foreach (var team in Teams.TeamsList)
{
teamsListBox.Items.Add(team.ToString());
}
}
}
public int stringToTeam(String Team, int start)
{
start = Team.IndexOf("TeamID", start) + 8;
int end = Team.IndexOf(",", start); //start index correct
//teamsListBox.Items.Add(end);
int id = Convert.ToInt32(Team.Substring(start, end - start)); //throws FormatException for string to DateTime
//String id = Team.Substring(start, (end - start));
teamsListBox.Items.Add("id is " + id);
start = Team.IndexOf("TeamName", start) + 11;
end = Team.IndexOf("\"", start);
//teamsListBox.Items.Add(end);
String name = Team.Substring(start, (end - start));
teamsListBox.Items.Add("name is " + name);
String city = Team.Substring(start, (end - start));
teamsListBox.Items.Add("city is " + city);
start = Team.IndexOf("TeamState", start) + 12;
end = Team.IndexOf("\"", start);
//teamsListBox.Items.Add(end);
//creates a Teams model obj with values pulled from string and adds it to static list of objs in Teams model
//teamsListBox.Items.Add(Teams.TeamsList.Count);
Teams newTeam = new Teams(id, name, city);
Teams.TeamsList.Add(newTeam);
//teamsListBox.Items.Add(Teams.TeamsList.Count);
//teamsListBox.Items.Add(newTeam.ToString());
end += 4;
if (end <= Team.Length)
{
return end;
}
else
{
return -1;
}
}
Когда я запускаю этот код, «сразу после ответа» не печатает на UI, в то время как тестовые сообщения над ними. Кроме того, эмулятор, в конце концов, сломается и выкинет исключение FormatException из строки в stringToTeam (о котором я расскажу еще об одном вопросе), который не будет вызван нигде. Также стоит упомянуть, что у меня есть тот же самый код для моего объекта Bars (с именами, которые, конечно же, переключаются), и бары отлично работают. Я сравнивал каждую строку кода в этих методах, а также модели и серверные контроллеры, и они точно такие же. Итак, почему код штрихов работает, пока код команды не работает?
Если это помогает, вот мой код модели:
public class Teams
{
private int teamID { get; set; }
private string teamName { get; set; }
private string teamCity { get; set; }
//private object teamFlag { get; set; } //Janci, I was never able to see your comments. What is teamFlag? Is that their logo?
public static List<Teams> TeamsList = new List<Teams>();
public Teams(int id, string name, string city)
{
teamID = id;
teamName = name;
teamCity = city;
}
public override string ToString()
{
return "Team: " + teamID.ToString() + " " + teamName.ToString() + " City: " + teamCity;
}
}
У меня есть база данных SQL, размещенную на веб-сайте лазурь, и я использую .NET для моего внутреннего интерфейса. Пожалуйста, помогите мне разобраться, почему код моей команды не будет работать. Благодарю.
Упс. Я снова копировал рабочий код из моего объекта в свою группу и забыл изменить его. Проблема все еще происходит, как только я изменил это. – jeffkempf
Используйте скрипач, чтобы узнать, что происходит на проводе, и быть возвращенным. –