Публикация в веб-сервис REST из .NET? - PullRequest
3 голосов
/ 29 апреля 2011

Я пытался подключиться к веб-сервису, используя инструкции здесь:

http://help.seeclickfix.com/kb/api/creating-an-issue

Я пришел с кодом ниже:

        string paramContent = "api_key=afs684eas3ef86saef78s68aef68sae&issue[summary]=abeTest&issue[lat]=39.26252982783172&issue[lng]=-121.01738691329956&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.

Может кто-нибудь увидеть какие-либо проблемы с тем, как я пытаюсь это реализовать?

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011

Ошибка 500, которую вы получаете, указывает на проблему на сервере, а не обязательно на ваш код.Вы успешно отправляете запрос и получаете ответ.

Проблема может быть связана с ошибкой на сервере или с содержанием вашего запроса, который сервер не может обработать.(В любом случае сервер не может выдать действительное сообщение об ошибке, как в их документации указывается на это)

Вам следует начать с проверки правильности содержания вашего запроса.Посмотрите пример размещенного вами URL-адреса seeclickfix.Попробуйте напрямую публиковать с помощью curl, как они показывают, но используйте содержимое вашего собственного сообщения следующим образом:

curl -v -d 'api_key = afs684eas3ef86saef78s68aef68sae & issue [summary] = abeTest & issue [lat] = 39.26252982783172 & issue [lng] =-121.01738691329956 & issue [address] = 111 Abe St., Nevada City, CA 'http://seeclickfix.com/api/issues.xml

Я ожидаю, что вы все равно получите ошибку 500 (я только что попробовал, и я получил ошибку 500).

Итог, похоже, что их API нарушен, а не ваша логика.

0 голосов
/ 29 апреля 2011

Вы не сделали ничего плохого. Я попытался сделать запрос с помощью Fiddler, и он вернул тот же код состояния 500.

Если что-то не так с данными, которые вы передали, они должны были вернуть код ответа 4XX.

...