我试图使用此处的说明点击网络服务:
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.
任何人都可以看到我试图实现此方法的任何问题吗?
答案 0 :(得分:3)
您收到的500错误表示服务器出现问题,而不一定是代码问题。您正在成功发送请求并收到回复。
问题可能是服务器中的错误,或服务器无法处理的请求内容问题。 (无论哪种方式,服务器都无法像他们的文档所暗示的那样提供有效的错误消息)
您应首先确保您的请求内容有效。请参阅您发布的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坏了,不是你的逻辑。
答案 1 :(得分:0)
你没有做错任何事。我尝试使用Fiddler发出请求,并返回相同的500状态代码。
如果您传递的数据有问题,那么他们应该返回4XX响应代码。