有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Play 2与JSON

我不熟悉使用Play2框架。这是我写的一个简单的控制器

package controllers;

import play.*;
import play.mvc.*;
import views.html.*;
import models.*;
import java.util.*;
import play.libs.Json;
import  com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.node.ObjectNode;


public class Users extends Controller {

      @BodyParser.Of(BodyParser.Json.class)
      public static Result register() {
          JsonNode json = request().body().asJson();
          String firstName=json.findPath("first_name").asText();
          String lastName=json.findPath("last_name").asText();
          String mobileNumber=json.findPath("mobile").asText();
          String address=json.findPath("address").asText();
          String userName=json.findPath("user_name").asText();
          String password=json.findPath("password").asText();

          ObjectNode result = Json.newObject();
          result.put("status", "FAILIURE");
          result.put("message", "Missing parameter [name]");
          return ok("meow");

  }

   public static Result login() {
    return TODO;
  }

  public static Result logout(final Long id) {
    return TODO;
  }

}

我用卷发击球

curl -i -H "Accept: application/json" -X PUT -d "{"first_name": "simon","last_name": "bolliver","mobile": "12345","address": "23 Donwton","user_name": "simon","password": "levy"}" http://localhost:9000/user/register

我在第二行收到一个NullPointerException。我做错了什么


共 (2) 个答案

  1. # 1 楼答案

    控制器看起来不错,但需要在curl请求上设置Content-type头,并用'而不是"包装-d参数

    curl -i -H "Accept: application/json" -H "Content-type: application/json" -X PUT -d '{"first_name": "simon","last_name": "bolliver","mobile": "12345","address": "23 Donwton","user_name": "simon","password": "levy"}' http://localhost:9000/user/register
    
  2. # 2 楼答案

    为了获得愉快的发展,请尝试在chrome{a1}中使用。或者如果你喜欢consoleway使用httpie