我有这个开发环境:
我的申请是用罐子和战争制作的。
我的Web服务位于jar文件中,它是这样的:
@Path("/messages")
@Stateless
public class MessagesWebService extends AbstractWebService {
....
@POST
@Path("/send")
@Consumes(MediaType.APPLICATION_JSON)
public String sendMessage(JSONObject messageParams) {
System.out.println(messageParams);
....
}
}
我的战争档案包含:
@javax.ws.rs.ApplicationPath("ws")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(resources);
return resources;
}
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(webServices.MessagesWebService.class);
resources.add(webServices.SessionsWebService.class);
}
}
其他服务按预期工作并返回json数据。相反,sendMessage总是收到一个空的messageParams({})。
这是来自我的Java客户端:
....
URL obj = new URL(baseUrl + path + urlParameters);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
....
con.setRequestProperty("Authorization", "Basic " + authStringEnc);
con.setDoOutput(true);
con.setDoInput(true);
con.setUseCaches(false);
con.setRequestProperty( "Content-Type", "application/json" );
con.setRequestProperty("Accept", "application/json");
con.setRequestMethod("POST");
OutputStream os = con.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
JSONObject msg = new JSONObject();
msg.put("mbxId", 4l);
msg.put("subject", "Just A Test");
osw.write(msg.toString());
osw.flush();
osw.close();
os.close();
请帮我解决这个问题!