私はJersey/Jacksonを使用して残りのAPIを作成しました。 JSONとして受け取っているPOJOに加えて、文字列トークンを受け取るように私のPOSTメソッドを調整したいと思います。複数のパラメータを指定した後のリクエストJSONとString on Jackson/Jersey JAVA
@POST
@Path("/user")
@Consumes(MediaType.APPLICATION_JSON)
public Response createObject(User o, String token) {
System.out.println("token: " + token);
String password = Tools.encryptPassword(o.getPassword());
o.setPassword(password);
String response = DAL.upsert(o);
return Response.status(201).entity(response).build();
}
が、私はそのメソッドを呼び出すしたいのですが、何らかの理由でトークンプリントは関係なく、私がしようとするものヌルいないために:私はそうのように私の方法のいずれかを調整してきました。ここで私はPOSTリクエストを送信するために書いたクライアントコードは次のとおりです。
public String update() {
try {
com.sun.jersey.api.client.Client daclient = com.sun.jersey.api.client.Client
.create();
WebResource webResource = daclient
.resource("http://localhost:8080/PhizzleAPI/rest/post/user");
User c = new User(id, client, permission, reseller, type, username,
password, name, email, active, createddate,
lastmodifieddate, token, tokentimestamp);
JSONObject j = new JSONObject(c);
ObjectMapper mapper = new ObjectMapper();
String request = mapper.writeValueAsString(c) + "&{''token'':,''"
+ "dog" + "''}";
System.out.println("request:" + request);
ClientResponse response = webResource.type("application/json")
.post(ClientResponse.class, request);
if (response.getStatus() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatus());
}
System.out.println("Output from Server .... \n");
String output = response.getEntity(String.class);
setId(UUID.fromString(output));
System.out.println("output:" + output);
return "" + output;
} catch (UniformInterfaceException e) {
return "failue: " + e.getMessage();
} catch (ClientHandlerException e) {
return "failue: " + e.getMessage();
} catch (Exception e) {
return "failure: " + e.getMessage();
}
}
任意の助けいただければ幸いです。
私はオプション1を避けることを好むだろう可能であればそれは私が望むより複雑なものを追加します。私はオプション2と3を試しましたが、トークンはnullを返します。私はそれほど疲れました:JSONObject j = new JSONObject(c); \t \t \t ObjectMapper mapper = new ObjectMapper(); \t \t \t文字列リクエスト= mapper.writeValueAsString(c)+ "&token = '12345'"; \t \t \t \t \t System.out.println( "request:" + request); \t \t \t ClientResponse response = webResource.type( "application/json") – sgoldberg
オプション2と3を実装する方法の例を追加しました – Perception
ありがとうございました!それは完璧に働いた!オプション3ありがとう! – sgoldberg