Я построил приложение C# около 8 месяцев назад, чтобы вытащить ответы SurveyMonkey и сохранить их на нашем SQL Server. Приложение работает каждый день более 6 месяцев без каких-либо проблем, но внезапно утром в пятницу я не могу получить никаких запросов. Я ничего не вижу на сайте разработчика, говоря об отключении, поэтому я изучил свой код для возможных проблем.SurveyMonkey API - токен авторизации не найден
Это первое приложение, которое я когда-либо писал для создания веб-запросов, поэтому возможно, что я делаю что-то плохо.
Запрос от Скрипач:
POST https://api.surveymonkey.net/v2/surveys/get_survey_list?api_key=<key hidden> HTTP/1.1
Authorization: bearer <token hidden>
Content-Type: application/json
Host: api.surveymonkey.net
Content-Length: 146
Expect: 100-continue
Connection: Keep-Alive
{
"page": 1,
"fields": ["title","analysis_url","preview_url","date_created","date_modified","language_id","question_count","num_responses"]
}
тело Ответ от Скрипач:
{"status":1,"errmsg":"Request header \"Authorization\" token not found"}
C# код:
private JObject SubmitPostRequest(string URIPath, string RequestBody)
{
using (var webClient = new WebClient())
{
// Create URI for POST request to go to. URI varies depending on API method and includes API Key.
Uri requestURI = new Uri(APIHost, URIPath + "?api_key=" + APIKey);
// Have web client use NT credentials for proxy server
webClient.Proxy.Credentials = CredentialCache.DefaultNetworkCredentials;
// Specify headers: access token in authorization header, content type
webClient.Headers["Authorization"] = "bearer " + AccessToken;
webClient.Headers["Content-Type"] = "application/json";
// Create requestBody as byte[]
byte[] requestBody = Encoding.Default.GetBytes(RequestBody);
// Connect to the URI and send requestBody as a POST command.
byte[] postResponse = webClient.UploadData(requestURI, "POST", requestBody);
// Update LastConnect
LastConnect = DateTime.Now;
++TransactionCounter;
// Convert byte[] response to string, parse string and return as JObject.
JObject jsonResponse = JObject.Parse(Encoding.Default.GetString(postResponse));
// Evaluate "status" field of jsonResponse. Throw exception if response is not 0.
dynamic dyn = jsonResponse;
if (dyn.status != 0)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("HTTP Post request failed:");
sb.Append("\tstatus: ").AppendLine(dyn.status.ToString());
sb.Append("\terrmsg: ").AppendLine(dyn.errmsg.ToString());
throw new WebException(sb.ToString());
}
return jsonResponse;
}
}
Какая ошибка указывает ваше сообщение? Нет смысла задавать вопрос, если у вас этого нет. Вы уверены, что не обновили свой API? Когда вы в последний раз вносили изменения в свое приложение? Если вы внесли изменения, что произойдет, когда вы вернетесь к предыдущей версии? Вы связались с Survey Monkey, чтобы узнать, внесли ли они какие-либо изменения? – user1666620
Ошибка «Локатор авторизации не найден», и это происходит в любое время, когда выполняется запрос. Если они внесли изменения в API, они еще не опубликовали никаких обновлений на сайте разработчика (https://developer.surveymonkey.com/). Приложение работает каждый день, и последнее успешно прошло раннее AM в четверг, 11/14/2014. Никакие изменения в код не были сделаны в течение нескольких месяцев. Я не связался с Survey Monkey напрямую, так как они просят вас отправить сообщение в StackOverflow, прежде чем обращаться к ним. –
Я могу вам сказать, что на стороне SurveyMonkey ничего не изменилось, и ни у кого другого нет этих ошибок. Я подозреваю, что на вашем конце что-то изменилось, что убирает заголовки. Можете ли вы сбросить данные заголовка, отправляемые в SurveyMonkey? –