Restful POST方法使JSONObject始终为空

时间:2016-09-14 13:43:12

标签: java rest glassfish netbeans-8

我有这个开发环境:

  • NetBeans:8.1
  • Glassfish:4.1
  • Java 8.1

我的申请是用罐子和战争制作的。

我的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();               

请帮我解决这个问题!

0 个答案:

没有答案