Я создал свое приложение в Yelp, получил свой ключ API, и все хорошо работает от Postman при выполнении бизнес-поиска.
Однако при тестировании с c # я получаю 401 несанкционированную ошибку сОшибка TOKEN_MISSING, в которой говорится "" {\ "error \": {\ "code \": \ "TOKEN_MISSING \", \ "description \": \ "Для использования этой конечной точки должен быть указан токен доступа. \"}} "".
Я правильно предоставляю свой ключ API, и в документации Yelp сказано, что это все, что мне нужно, поэтому я не уверен, в чем проблема.Вот два отдельных примера кода на c #, которые НЕ работают (я заменил свой фактический ключ API на соображения безопасности):
Пример использования WebRequest:
var webRequest = WebRequest.Create("http://api.yelp.com/v3/businesses/search?term=Clayton+Bicycle+Center&location=5411+Clayton+Rd%2c+Clayton%2c+CA+94517%2c+US");
webRequest.Method = "GET";
webRequest.Headers.Add("Cache-Control", "no-cache");
webRequest.Headers.Add("Authorization", "Bearer <my_api_key>");
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
var stream = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);
var content = stream.ReadToEnd();
Console.Write(content);
Пример использования RestSharp:
var client = new RestClient("http://api.yelp.com/v3/businesses/search?term=Clayton+Bicycle+Center&location=5411+Clayton+Rd%2c+Clayton%2c+CA+94517%2c+US");
var request = new RestRequest(Method.GET);
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Authorization", "Bearer <my_api_key>");
var response = client.Execute(request);
Console.Write(response.Content);
Я изучил запросы в Fiddler, и оба посылают те же заголовки, что и рабочий поиск Почтальона, но оба возвращают 401 несанкционированную ошибку, в то время как Почтальон возвращает результаты поиска.Есть идеи?
Редактировать:
Что ж, это смущает, очевидно, моя проблема была в том, что я пытался получить доступ к API Yelp через http вместо https.Как только я перешел на https, все заработало как положено.