【发布时间】:2017-06-27 14:08:25
【问题描述】:
我的机器上本地运行 Google Pub/Sub 模拟器。我可以使用 YARC (Yet Another REST Client) 发布消息,其中包含以下详细信息:
网址:
POST http://localhost:8311/v1/projects/my-project/topics/my-project-test:publish
有效载荷:
{
"messages": [
{
"attributes": {
"1": 1
}
}
]
}
这会导致 200 响应,我可以在模拟器的控制台输出中看到收到了消息。
现在,当我尝试使用 Java 的 HTTP 库执行相同操作时,我一直收到 400 错误。代码如下:
String payload = "{\"messages\":[{\"attributes\":{\"1\":1}}]}";
HTTP.Response response = HTTP.POST(options.getPubsubRootUrl() + "/v1/projects/my-project/topics/my-project-test:publish", payload);
我在调试器中检查了头文件,发现它们是:
Content-Type: application/json
Content-length: ####(some number)
我也在从 REST 客户端发送 Content-Type(Content-length 也可能在幕后发送)
据我所知,这些请求是相同的,但由于某种原因,从我的 Java 代码执行此操作会导致错误,而从 REST 客户端执行此操作则不会。
我错过了什么明显的东西吗?
【问题讨论】:
-
能否请您指定这个 HTTP 类是什么?对我来说,它似乎不是标准 Java 的一部分。
-
@BalázsNemes 哦,哇,这总是最简单的事情......我从代码中的其他地方复制了那行,它实际上是
org.neo4j.test.server.HTTP- 当我粘贴到 Eclipse 中时自动导入。更改为 Unirest 并且可以正常工作 - 谢谢!随意添加一个答案,我会接受它 -
酷,实际上我没有使用过任何一个,但会在需要时尝试 Unirest。
标签: java rest http-headers google-cloud-pubsub