我正在为其中一个供应商REST服务编写REST客户端。我使用的是jersey 2.x和JSON-P,下面是我添加的依赖项。
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-processing</artifactId>
<version>2.26</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.26</version>
</dependency>
</dependencies>
我成功编写了GET请求代码并收到了JSON输出。我将它保存到一个文件中并使用JSON-P来解释并完成我自己的逻辑而没有任何问题。
但现在我需要写一个POST请求。当我使用如下的CURL时,我能够做到。并希望使用Jeresey 2.x和JSON-P实现相同的目标。
curl -v -H "Accept:application/json" -H "Content-Type:application/json" -u user:password -X POST --databinary @./InputParameters.json https://<IP>:<PORT>/Configuration/server
InputParameters.json contents
{
"ip": "10.197.70.16",
"partNumber": 202067,
"model": "IBM P7"
}
当我尝试以JSON格式({"ip": "10.197.70.16", "partNumber": 202067, "model": "IBM P7"}
)将字符串传递给String时,但是没有用。所以尝试如下的JsonObject仍然没有工作。
JsonObject jsonObj = Json.createObjectBuilder()
.add("ip", "10.197.70.16")
.add("partNumber", 202067)
.add("model", "IBM P7")
.build();
response = invocationBuilder.post(Entity.json(jsonObj));
我知道核心java,基于这种经验,我跳进编写这个程序并获得了GET但不是POST的成功。我怀疑我在做一些从根本上错误的POST。
答案 0 :(得分:0)
在添加以下依赖项后解决问题。在这一点上,我不确定它做了什么。
感谢Swamy(TCS)的支持,以解决这个问题。
<dependency>
<groupId>com.owlike</groupId>
<artifactId>genson</artifactId>
<version>1.4</version>
</dependency>