我需要发送带有内容正文的 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/