c# - .NET HTTP GET 与正文

标签 c# .net elasticsearch webrequest

我需要发送带有内容正文的 HTTP GET 请求。是的,我知道这是不受欢迎的,但从技术上讲,这是合法交易。

目前,.NET WebRequest 类在尝试获取请求流时会失败,如下所示。

string url = "https://someplace.com/api";
var wr = WebRequest.Create(url);
wr.Method = "GET";

string json = JsonConvert.SerializeObject(query);
byte[] byteData = Encoding.UTF8.GetBytes(json);

using (var req = wr.GetRequestStream()) // Exception thrown here
{
  req.Write(byteData, 0, byteData.Length);
  req.Flush();
}

我还有哪些其他选择?

等效的 CURL 命令是:

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

最佳答案

您可以使用 HTTP GET 仅发送查询字符串(curl 命令执行相同的操作,您可以使用 fiddler 等工具检查它)。您将必须像下面这样传递整个字符串:

string json = JsonConvert.SerializeObject(query);
string url = "https://someplace.com/api?pretty="+json;
var wr = WebRequest.Create(url);
wr.Method = "GET";

注意:curl -XGET 和 curl -G 是一样的。

关于c# - .NET HTTP GET 与正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40818738/

相关文章:

c# - 音频,FFT不起作用

c# - 异步等待 WhenAll 不等待

Elasticsearch 术语聚合 - 用于对象的动态键

elasticsearch - 多字段与字段数据进行查询和排序

elasticsearch - Elasticsearch Groovy token

c# - 创建自定义设计时环境

c# - 用于单元测试的模拟 HttpActionContext

c# - 可以在 Windows 中以编程方式识别设备的物理 USB 端口吗?

c# - Microsoft.WindowsAPICodePack.Shell音频持续时间未获得

.net - 如何仅使用 Autofac 注入(inject)一些构造函数参数并结合使用 InjectionModule