当前位置: 首页 > 面试题库 >

无法发送带有GET请求的内容主体

刘棋
2023-03-14
问题内容

我正在尝试在Elasticsearch上执行简单的“请求正文搜索”,如以下示例所示,但使用.NET而不是curl

$ curl -XGET 'http://localhost:9200/twitter/tweet/_search' -d '{
    "query" : {
        "term" : { "user" : "kimchy" }
    }
}
'

下面是我的.NET代码。

var uri = "http://localhost:9200/myindex/_search";
var json = "{ \"query\" : { \"term\" : { \"user\" : \"kimchy\" } } }";

var request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
request.ContentType = "text/json";
request.Method = "GET";

var responseString = string.Empty;

using (var streamWriter = new System.IO.StreamWriter(request.GetRequestStream()))
{
    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();

    var response = (System.Net.HttpWebResponse)request.GetResponse();
    using (var streamReader = new System.IO.StreamReader(response.GetResponseStream()))
    {
        responseString = streamReader.ReadToEnd();
    }
}

但是,我收到以下错误。

Cannot send a content-body with this verb-type.
...
Exception Details: System.Net.ProtocolViolationException: Cannot send a content-body with this verb-type.
...
Line 54: using (var streamWriter = new System.IO.StreamWriter(request.GetRequestStream()))

有什么方法可以GET使用标准.NET类发送带有请求的内容主体。还是有解决方法?


问题答案:

将更Method改为POST解决方法。

request.Method = "POST";

MSDN声明,ProtocolViolationException如果GetResponseStream()使用GETor
HEAD方法调用该方法,则将引发a 。



 类似资料:
  • 问题内容: 将请求正文与GET请求一起传递是否违反REST风格? 例如在Elasticsearch中过滤一些信息 甚至设计了一些工具来避免GET请求中的请求主体(例如邮递员) 问题答案: 从RFC: GET请求消息中的有效负载没有定义的语义。在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。 换句话说,这不是禁止的,但是它是未定义的行为,应避免使用。HTTP客户端,服务器和代理可以随

  • 我需要发送一个请求,如下所示 我使用以下代码,但它似乎没有发送一个正确的请求,因为响应对象是空的。我也想知道如何显示完整的url restTemboard发送?我知道WireShark可以使用,但有什么方法可以使用restTem板检索它吗? 密码

  • 请求方式: "|3|1|url|\r" 参数: url 设置Get请求的url链接 返回值: "|3|code|data|\r" 参数: code http请求返回的成功或者错误码, 成功:code = 200 获取数据失败:code = -1 http请求字段错误:code = 1 data http请求返回的数据 Arduino样例: softSerial.print("|3|1|http:/

  • 本文向大家介绍jsp+ajax发送GET请求的方法,包括了jsp+ajax发送GET请求的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ajax发送GET请求,然后通过jsp页面来接收处理的实现方法。分享给大家供大家参考。具体实现方法如下: Ajax发送GET请求 这里用一个实例演示Ajax发送get请求,实例具体要求为一个注册页面,当用户填写完用户名称时,该输入框失去焦点后会通过A

  • 问题内容: 在swift 3中建议使用带参数的GET的哪种方法? 范例: 提前致谢 ! 问题答案: 示例如何使用请求。

  • 在查看了文档之后,我注意到没有一个GET方法接受头作为参数,发送头(如accept和Authorization)的唯一方法是使用exchange方法。 因为这是一个非常基本的动作,我想知道我是否遗漏了什么,还有另一个更容易的方法来做它?