HttpWebRequest返回(400)错误请求

时间:2017-03-08 13:40:09

标签: c# httpwebrequest

请求提供以下错误: 远程服务器返回错误:(400)错误请求。

我无法在互联网上找到解决方案。有谁知道如何解决这个问题?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"https://maps.googleapis.com/maps/api/geocode/json");
            request.ContentType = "application/x-www-form-urlencoded";
            request.Method = "POST";
            var parameters = string.Format("language={0}&latlng={1}&client={2}&signature={3}", "nl", "51.123456,5.612345", "gme-aa", "******_******=");

            byte[] byteArray = Encoding.UTF8.GetBytes(parameters);
            request.ContentLength = byteArray.Length;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            /*
             * Read HttpWeb Response
             */
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string Response = reader.ReadToEnd();
            response.Close();

编辑:

我在Lowcode平台Outsystems内部工作。 Outsystems在没有参数的情况下在WebRequest.Create()中创建URL。所以,我可以访问webRequest对象并需要传递参数。

2 个答案:

答案 0 :(得分:0)

您必须使用HTTP " GET" 方法。

在GET请求中,您将参数作为查询字符串的一部分传递。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create($"https://maps.googleapis.com/maps/api/geocode/json?language=fr&latlng=51.123456,5.612345&key={apiKey}");
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "GET";

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
    string result = new StreamReader(response.GetResponseStream()).ReadToEnd();
}

答案 1 :(得分:0)

根据documentation,API期望POST方法并接收URL中的参数而不是正文。

如果您使用的是OutSystems平台,则可以使用Consume REST API功能轻松调用Web服务,而无需使用代码。像这样配置你的API(你可以从上面的文档页面复制示例JSON):

enter image description here