我的机器上本地运行了Google Pub / Sub模拟器。我可以使用YARC(Yet Another REST Client)发布消息,其中包含以下详细信息:
URL:
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客户端执行此操作则不会。
这里有什么明显的东西我不见了吗?
答案 0 :(得分:1)
原来我认为是标准Java类org.neo4j.test.server.HTTP
的HTTP类,当我从代码中的其他地方复制该行时,它已在Eclipse中自动导入。
我认为,这个特定的实现是为了与neo4j测试服务器一起工作,必须做一些超出简单HTTP请求的事情(添加一些标题或其他东西),导致请求与我从YARC发送的请求有所不同。