我正在为我们的应用程序开发一个新的RESTful Web服务.
在某些实体上执行GET时,客户端可以请求实体的内容.如果他们想要添加一些参数(例如排序列表),他们可以在查询字符串中添加这些参数.
或者,我希望人们能够在请求正文中指定这些参数. HTTP/1.1似乎没有明确禁止这一点.这将允许他们指定更多信息,可以更容易指定复杂的XML请求.
我的问题:
我知道你不应该发送带有正文的 HTTP GET 请求,但是 ceilometer web api 强迫我这样做。我正在开发一个 ceilometer scala 客户端,所以我需要一种 scala/java 方式来发出带有主体的 get 请求。到目前为止,我尝试使用 beeClient ( http://www.bigbeeconsultants.co.uk ) 和使用 httpConnection 的纯 Java,但出现 404 错误。在 curl 我可以通过这种方式实现结果:
curl -X GET -H "X-Auth-Token: ..long long token here.."
-H "Content-Type: application/json"
-d '{"q": [{"field": "resource", "op": "eq", "value": "gdfsf"}]}'
http://137.204.57.150:8777/v2/meters/
Run Code Online (Sandbox Code Playgroud)
那是我使用 java HttpURLConnection 的 Scala 代码:
import java.io._
import java.net._
val token = "myToken"
val url = new URL("http://137.204.57.150:8777/v2/meters/")
val body = "{\"q\": [{\"field\": \"resource\", \"op\": \"eq\", \"value\": \"gdfsf\"}]}"
val bodyLenght = …Run Code Online (Sandbox Code Playgroud)