当前位置: 首页 > 知识库问答 >
问题:

Spring启动服务的改装后请求

司空赞
2023-03-14

我正在使用改进后的Spring Boot服务请求,但总是被称为失败回调方法。这是我的简化代码:

Spring Boot服务(管理员):

@RestController
public class ServController {

   @Autowired
   private UserRepository userRepository;

   @RequestMapping(value = "/user", method = RequestMethod.POST)
   public Boolean signUpUser(@RequestBody User user)
   {

      return true;
   }
}

我的客户端界面:

public interface ChainApi {

    public static final String USER_PATH = "/user";

    @POST(USER_PATH)
    public void signUpUser(@Body User user, Callback<Boolean> callback);
}

异步 POST 请求:

User user = new User();
user.setId(12);
user.setName(nameEtx.getText().toString());
user.setEmail(emailEtx.getText().toString());
user.setPassword(passwordEtx.getText().toString());

RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(Constant.URL_LOCALHOST)
            .build();

ChainApi service = restAdapter.create(ChainApi.class);

service.signUpUser(user, new Callback<Boolean>() {
    @Override
    public void success(Boolean aBoolean, Response response) {

        Log.i(TAG, "Succesfull");

    @Override
    public void failure(RetrofitError error) {

        Log.i(TAG, "Error " + error.getMessage()); // 400 Bad Request

    }
});

这是我的用户类(POJO):

@JsonIgnoreProperties(value = { "additionalProperties"})
public class User {

    @JsonProperty("id")
    private Integer id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("password")
    private String password;
    @JsonProperty("email")
    private String email;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    // methods
}

注意:我在Android开发,当从邮递员手动发送请求时,我得到200 OK。此外,我在logcat中得到消息:400错误请求

共有1个答案

潘高洁
2023-03-14

改型使用GSON作为其默认的转换器@jsonignoreperties是Jackson的注释。查看您的RestaAdapter,您似乎没有指定Jackson转换器。

Square实现了一个JasksonConverter,您可以通过包含依赖项来使用它。

compile 'com.squareup.retrofit:converter-jackson:X.X.X'  

使用与您的改造版本匹配的版本。

然后

JacksonConverter converter = JacksonConverter(new ObjectMapper());
RestAdapter restAdapter = new RestAdapter.Builder()
            .setEndpoint(Constant.URL_LOCALHOST)
            .setConverter(converter)
            .build();
 类似资料:
  • 我有一个使用SSL处理设置的Spring Boot应用程序。我使用iptables重新路由将所有端口80流量路由到Spring Boot端口8080,将所有443流量路由到Spring Boot8443。 然后,Spring Boot将所有http流量重定向到https(443)。一切都很好。 现在我想运行Apache2服务器,并使用它将流量重定向到Spring Boot,而不是直接使用iptab

  • 我收到以下控制台日志: 它说“检测到状态变化:正在运行”立即变为“已停止”。我曾尝试: 关闭内部网络的Windows防火墙 在两个位置将httpd.conf文件中的端口80更改为99监听:80和ServerNamelocalhost:80 在相同的两个位置将httpd.conf文件中的端口443更改为445。 我的机器上没有安装Apache服务器作为Windows服务。 没有为今天的日期生成错误或

  • 我在Spring 3中使用@Scheduled annotation。我需要每周或每两周运行一些任务,所以我使用cron表达式作为参数,例如。 我的问题是,如果我将创建必须每7天运行一次的计划任务,并且在第6天我将重新启动服务器(与战争重新部署),它会重置这个计划任务(我需要再次等待7天)还是它会保存其状态并在第7天触发此任务?

  • 我正在使用Spring Boot注册服务器(Eureka服务器)。目前它正在使用以下配置。 项目名称:注册服务 内部主要方式:系统。setProperty(“spring.config.name”、“注册服务”); "yml file": 文件名:注册-服务内容: 通过以上配置,应用程序开始在2323上运行。但如果我换了Spring。配置。名称,它不工作,开始给连接拒绝异常。 > 为什么会这样?即

  • 我正在使用Spring方法级别的注释@cacheable来缓存我从数据库中获取的数据。我可以在服务器启动时使用上述注释执行缓存吗?我尝试了这个,但它再次从数据库而不是从缓存中获取。

  • 启动服务器时获取错误: 通用域名格式。柯萨托德夫。图ql。工具。SchemaClassScannerError:无法将类型定义(非NullType{type=ListType{type=TypeName{name='Person'}}}})与java类型(类com.demo.graphql.entities.Person)匹配:java类不是列表或泛型类型信息丢失:类com。演示。图ql。实体。人