#c# #.net #web-services #rest
#c# #.net #веб-сервисы #rest
Вопрос:
Я пытался запустить веб-сервис, используя приведенные здесь инструкции:
http://help.seeclickfix.com/kb/api/creating-an-issue
Я придумал приведенный ниже код:
string paramContent = "api_key=afs684eas3ef86saef78s68aef68saeamp;issue[summary]=abeTestamp;issue[lat]=39.26252982783172amp;issue[lng]=-121.01738691329956amp;issue[address]=111 Abe St., Nevada City, CA";
byte[] paramBytes = Encoding.UTF8.GetBytes(paramContent);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://seeclickfix.com/api/issues.xml");
req.Method = "POST";
req.ContentLength = paramBytes.Length;
//req.ContentType = "application/x-www-form-urlencoded";
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(paramBytes, 0, paramBytes.Length);
}
using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) //HERE!
{
if (resp.StatusCode != HttpStatusCode.OK)
{
string message = String.Format("POST failed. Received HTTP {0}", resp.StatusCode);
throw new ApplicationException(message);
}
StreamReader sr = new StreamReader(resp.GetResponseStream());
string response = sr.ReadToEnd();
Console.WriteLine(response System.Environment.NewLine);
}
Но в строке с HERE!
комментарием он выдает ошибку:
The remote server returned an error: (500) Internal Server Error.
Может ли кто-нибудь увидеть какие-либо проблемы с тем, как я пытаюсь это реализовать?
Ответ №1:
Ошибка 500, которую вы получаете, указывает на проблему на сервере, не обязательно проблему с вашим кодом. Вы успешно отправляете запрос и получаете ответ.
Проблема может заключаться в ошибке на сервере или в проблеме с содержимым вашего запроса, который сервер не может обработать. (В любом случае сервер не может предоставить действительное сообщение об ошибке, как предполагает их документация)
Вы должны начать с того, что убедитесь, что содержимое вашего запроса является действительным. Смотрите пример на URL seeclickfix, который вы опубликовали. Попробуйте напрямую опубликовать с помощью curl, как они показывают, но используйте содержимое вашего собственного сообщения следующим образом:
curl -v -d ‘api_key=afs684eas3ef86saef78s68aef68saeamp;issue[summary]=abeTestamp;issue[lat]=39.26252982783172amp;issue[lng]=-121.01738691329956amp;issue[address]= Ул. Эйба, 111, Невада-Сити, Калифорния’ http://seeclickfix.com/api/issues.xml
Я ожидаю, что вы все равно получите ошибку 500 (я только что попробовал это, и я получил ошибку 500).
В итоге, похоже, что их api сломан, а не ваша логика.
Ответ №2:
Вы не сделали ничего плохого. Я попытался выполнить запрос с помощью Fiddler, и он вернул тот же код состояния 500.
Если с переданными вами данными было что-то не так, то они должны были вернуть код ответа 4XX.