C# 从C调用REST服务:错误500

C# 从C调用REST服务:错误500,c#,.net,web-services,rest,C#,.net,Web Services,Rest,我试图访问REST web服务,但收到一个错误HTTP 500。一定有什么事情我做得不对,但我找不到。这是一个公开的服务,否则我会得到一个403错误 这是我的密码: url是包含web服务url的字符串,param是包含参数的字符串 string url = @"http://crimemapping.edmontonpolice.ca/DataProvider.asmx/getOccurrenceInfo"; string param = "{\"method\

我试图访问REST web服务,但收到一个错误HTTP 500。一定有什么事情我做得不对,但我找不到。这是一个公开的服务,否则我会得到一个403错误

这是我的密码: url是包含web服务url的字符串,param是包含参数的字符串

        string url = @"http://crimemapping.edmontonpolice.ca/DataProvider.asmx/getOccurrenceInfo";
        string param = "{\"method\":\"send\",\"params\":[\"neighbourhoodID\":\"2\",\"crimeTypes\":\"Assault\",\"strStartDate\":\"2011,12,02\",\"strEndDate\":\"2012,03,01\"]}";
        // Reassigning param to increase readability.
        param = @"{""method"":""send"",""params"":[""neighbourhoodID"":""2"",""crimeTypes"":""Assault;Sexual Assaults;Break and Enter;Theft From Vehicle;Homicide;Theft Of Vehicle;Robbery;Theft Over $5000"",""strStartDate"":""2012,02,01"",""strEndDate"":""2012,03,01""]}";

        string response;
        WebRequest request = WebRequest.Create(url);
        request.Method = "POST"; //REST based-services using Post method
        request.ContentType = "application/json"; //tells request the content typs is JSON
        request.ContentLength = param.Length;

        StreamWriter requestWriter = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII);
        requestWriter.Write(param);
        requestWriter.Close();

        StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
        response = responseReader.ReadToEnd();
        responseReader.Close();
这是什么类型的

param 
你确定这是json吗

如果可以在fiddler中看到请求,只需从fiddler发送字符串以验证.net基础结构代码是否正常工作


但最好的办法是从服务器获取信息,正如前面提到的500是内部服务器错误。错误描述将指出错误所在

一开始我无法理解的是,任何IP都不能发出JSON请求。它会在继续之前检查IP。我犯的错误太离谱了,所以帮不了什么忙


谢谢大家。

需要查看url变量和param变量的值。500是一个内部服务器错误-意味着要么服务不可靠,要么您传入的数据不知道如何处理。您确定web服务接受json吗?不是所有人都接受。是的,约翰,这一个接受JSON。我从Fiddler的跟踪中知道了这一点。@boo,我已经在上面的代码中输入了这些值。请看一看。如果在@中,您的参数将更可读。。。格式而不是…谢谢。变量param是string。我不太清楚从fiddler发送字符串是什么意思。我是否应该尝试从fiddler发送一个类似的请求,看看我会得到什么样的响应?@MuhammadGhazi fiddler可以捕获流量,因此您可以简单地打开fiddler,然后尝试以您一直尝试的方式访问web服务。约翰,这是一个RESTWeb服务,所以它没有WSDL。因此,如果直接从浏览器访问,它不会显示任何有意义的内容,而是显示一个通用的.NET错误页面。是的,这就是为什么在fiddler中,您要获取发送到服务的实际json字符串,并将其粘贴到代码中: