将JSON发送到服务器正在提供415 Unsupported Media Type

时间:2015-04-22 05:26:57

标签: java json angularjs jax-rs jersey-2.0

我有以下角度代码:

<button ng-click="ctrl.submit(light)">Switch</button>

按钮点击按以下方式处理:

   self.submit = function(light) {
        console.log("==============================");
        console.log("clicked button: ", light);
        console.log("==============================");

        $http.post('/ARHomeAutomation/rest/light/state/', light).then(function(response) {
            console.log('headers: ' , response.headers);
            console.log('status: ', response.status);
            console.log('config: ', response.config);
            console.log('data: ', response.data);
            self.state = response.data;
        }, function(errResponse) {
          console.error('Error while updating light state');
        })
        console.log('User clicked submit with: ', light.id );
        console.log('response: ', self.light);
    }

在服务器端,我有以下方法应该响应请求:

 @POST
 @Path("/state/")
 @Consumes(MediaType.APPLICATION_JSON)
 @Produces(MediaType.TEXT_HTML)
 public String setStateOfLight(JSONObject aLight) {
    if(aLight == null) {
      return "It's a null";
    } else {
      System.out.println("content: " + aLight);
    }
    JSONObject jsonObject = new JSONObject();
    //Update the state of the light with the given id
    for(Light light: lightCollection) {
        // .....
    }
    return getLightsStateAsJSON();
 }

当我点击我的按钮时,我收到以下消息:

415 Unsupported MediaType

根据firefox我在我的请求中发送JSON。当我检查发送数据时,至少它会这样说。

Showing JSON data

这是我的标头请求数据:

Header content

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

看起来标题内容类型设置为text / html,即使正文是JSON。我想你需要在Angular代码的帖子中的某个地方将content-type设置为application / json。