JSONまたはXMLとしてサーバーにPUTするPOJOを以下に示します。
これは私がやったことです
クライアント:
ClientConfig config = new ClientConfig();
Client client = ClientBuilder.newClient(config);
WebTarget target = client.target(getBaseURI());
public void putFriend(String uri , Friend friend)
{
System.out.println(friend.toString());
target = target.path(some_path).path(uri);
ClientResponse response = target.request(MediaType.APPLICATION_JSON).put(Entity.entity(friend,MediaType.APPLICATION_JSON),ClientResponse.class);
}
Webで見つけた例はWebResourceを使用していました。
WebTargetの使用方法がわかりません。私がやったことは、SOで見つかったいくつかの例からですが、Entity.entity()はエラーundefined method entity(friend、String)を与えます。
[〜#〜] pojo [〜#〜]
@XmlRootElement
public class Friend{
private String friendURI;
private String event;
private String uri;
String getUri() {
return uri;
}
void setUri(String uri) {
this.uri = uri;
}
String getFriendURI() {
return friendURI;
}
void setFriendURI(String friendURI) {
this.friendURI = friendURI;
}
String getEvent() {
return event;
}
void setEvent(String event) {
this.event = event;
}
public String toString() {
return "Friend [friendURI=" + friendURI + ", uri=" + uri + ", event=" + event
+ "]";
}
これを行う方法をご案内ください。
ありがとう
Jerseyには2つのメジャーバージョン、1.xと2.xがあります。両方を組み合わせて使用しようとしているようですが、動作しません。 2.xバージョンには、1.xのように一部のクラスがありません。
Jersey 2.xを使用する場合は、Response
ではなく ClientResponse
を使用する必要があります。
_Response response = target.request().put(Entity.json(friend));
// .json == automatic 'application/json'
_
Friend
クラスに対してパブリックでなければなりませんWebTarget
APIも参照してください基本的な内訳。
WebTarget
でrequest()
を呼び出すと、 _Invocation.Buidler
_ が返されます
_Invocation.Builder builder = target.request();
_
put
を呼び出すと、Response
が返されます
_Response response = builder.put(Entity.json(friend));
_
応答から既知のタイプを抽出するには、readEntity(Class type)
を使用できます
_String responseString = response.readEntity(String.class);
response.close();
_