У меня есть RESTful Web API, который работает правильно, поскольку я могу проверить его с помощью Fiddler. Я вижу, что звонки проходят, я вижу, что ответы возвращаются.Вызов веб-API не возвращается
Я разрабатываю приложение планшета, которое должно использовать веб-API для извлечения данных или обновления в репозитории.
Мои вызовы не возвращаются, и в Fiddler нет ни одной трассы, чтобы показать, что мои вызовы даже достигают сервера.
Первый звонок, который мне нужно сделать, - это войти в систему. URI будет следующим образом:
http://localhost:53060/api/user
Этот вызов обычно возвращают некоторую информацию о пользователе (например, членство в группе, уровень разрешения и так далее). Веб-API использует проверку подлинности Windows, поэтому репозиторий способен разрешать все эти поля на основе переданных учетных данных. Как я уже сказал, в Fiddler я вижу три вызова, сделанных в URI, когда аутентификация согласовывается между вызывающим и сервером , Третий вызов возвращается с объектом JSON, который содержит всю информацию, полученную из репозитория, как и ожидалось.
Теперь, переходя к моему клиенту у меня есть следующие:
var webApiClient = new HttpClient(new HttpClientHandler()
{
UseDefaultCredentials = true
})
{
BaseAddress = new Uri("http://localhost:53060/")
};
webApiClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await webApiClient.GetAsync("api/user");
var userLoginInfo = await response.Content.ReadAsAsync<UserLoginInformation>();
Мой призыв к «GetAsync» никогда не возвращается и, как я уже сказал, я не вижу никаких следов его в Fiddler.
Любая идея о том, что я делаю неправильно?
ТИА, Ed
Локальный адрес на планшете не будет работать, даже в эмуляторе. Для его тестирования необходимо использовать имя компьютера или IP. – Nkosi
@Nkosi Я не думаю, что это причина, потому что я видел, как он работал в видео Jesse Liberty на Pluralsight. Он создает приложение Windows Store и в сегменте, посвященном удаленным данным, он создает веб-API, который обслуживает данные в своем приложении WinStore. Он использует симулятор планшета, чтобы продемонстрировать доступ. Он обращается к веб-API, устанавливая BaseAddress на «http: // localhost: 33263». Он не использует проверку подлинности Windows. Это будет единственной разницей между тем, что я сделал, и тем, что он сделал. Вы говорите, что «localhost» не работает в интегрированной проверке подлинности Windows? Я дам ему попробовать – Eddie
@Nkosi Возможно, вы были в самом начале.Я настроил свой IIS Express, чтобы выставить свой веб-API с помощью IP-адреса, и теперь я вижу, что по крайней мере один HTTP GET проходит. Он генерирует 401. В Fiddler, как только я проверяю флажок «Автоматически проверять подлинность», через проверку подлинности происходит три запроса. Последний возвращает с желаемым результатом HTTP 200. Мне нужно выяснить, как заставить мой клиент автоматически аутентифицироваться. – Eddie