如果未使用POST,则为HTTP错误403

时间:2017-11-16 14:14:52

标签: c# rest http

我正在尝试通过REST从c#winform应用程序发送protobuf数据。当我使用POST方法的HTTP请求时(如下面的代码所示),它工作正常并返回“OK”状态。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://xxxxx.execute-api.eu-west-1.amazonaws.com/test/input");
request.Headers["Authorization"] = "xxxyyyzzz"                                 
request.Method = "POST";
request.ContentType = "application/octet-stream";
byte[] bytes = System.IO.File.ReadAllBytes("C:\\MyProtobuf.proto");
request.ContentLength = bytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)request.GetResponse();
                MessageBox.Show(myHttpWebResponse .StatusCode.ToString());
myHttpWebResponse .Close();

但是,如果我只是想使用下面的代码来检查网站是否还活着,它会给我403.禁止错误。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://xxxxx.execute-api.eu-west-1.amazonaws.com/test/input");
request.Headers["Authorization"] = "xxxyyyzzz";
HttpWebResponse myHttpWebResponse = (HttpWebResponse)request.GetResponse();
MessageBox.Show(myHttpWebResponse .StatusCode.ToString());
myHttpWebResponse .Close();

出现此错误的可能原因是什么?

1 个答案:

答案 0 :(得分:2)

您的服务提供POST方法动词,因此您必须使用post方法调用此服务,否则您应该更改服务方法以支持get方法。