我有以下代码发送请求并收到响应,似乎所有内容都已配置但代码正在返回NullPointerException.
我不确定丢失了什么.我打印出了具有正确URL地址的readyURL变量.stackTrace提供的不多.
码
try {
final String APIKEY = "MYAPI";
final String URL = "http://api-sandbox.seatwave.com/v2/discovery/events?apikey="
+ APIKEY;
String readyUrl = URL + "&what=" + name;
RestTemplate restTemplate = new RestTemplate();
EventsResponse eventResponse = restTemplate.getForObject(readyUrl,
EventsResponse.class);
System.err.println("seatwave>>>"
+ eventResponse.getEvents().getEvent().size()); //line 245
} catch (NullPointerException e) {
e.printStackTrace();
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class EventsResponse {
@XmlElement
private Status status;
@XmlElement(name = "Paging")
private Page page;
@XmlElement
private Events events;
public Status getStatus() {
return status;
}
public void setStatus(Status status) …Run Code Online (Sandbox Code Playgroud) 我想让用户选择使用他们的 Google 或 Facebook 帐户登录到 Spring Boot Web 应用程序。
我检查了Spring Cloud Security 文档和This GitHub issue以添加此类 SSO 功能,但在两者上都只显示了如何配置一个 SSO 服务器,因此它是 Google 或 Facebook。
如何添加这两个选项?在 Web 前端,我将为每个选项添加一个按钮,以便用户可以选择要使用的帐户,Google 或 Facebook。
或者我选择了错误的包,应该使用完全不同的东西来实现这一目标?
谢谢!
春季4.3.2
我需要手动调用SmartValidator.validate(),我需要它使用我在目标实体上定义的验证组.javadoc说这个......
"validate()的这个变体支持验证提示,例如针对JSR-303提供程序的验证组(在这种情况下,提供的提示对象需要是类型为Class的注释参数)."
void validate(Object target,
Errors errors,
Object... validationHints)
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我找不到有关使用"validationHints"的更多信息或示例.所以我一直在尝试以下内容......
validator.validate(targetEntity, errors, new Class[]{ValidationGroup1.class});
validator.validate(targetEntity, errors, ValidationGroup1.class);
Run Code Online (Sandbox Code Playgroud)
到目前为止,它完全忽略了我的分组.它总是调用所有验证器.有任何想法吗?
谢谢!
===================================
更新:javadoc也说这个..
"注意:实际目标Validator可能会忽略验证提示,在这种情况下,此方法的行为应与其常规Validator.validate(Object,Errors)兄弟一样."
这听起来像正在发生的事情.但它没有提供任何线索,为什么它可能会忽略它.
So I have this code
import org.springframework.web.bind.annotation.GetMapping;
Run Code Online (Sandbox Code Playgroud)
And I already have the following in my POM file
<packaging>war</packaging>
<properties>
<spring.version>4.3.0.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
Yet when I built it ends up complaining package org.springframework.web.bind.annotation does not exist
Why? I already added spring web as a dependency. What am I doing wrong?
我想创建一个生成text/csv内容的简单网络服务。但我不能要求它:
@RestController
public class MyServlet {
@PostMapping(produces = {"text/csv", "application/json"})
public Object post() {
//...
}
}
spring.mvc.contentnegotiation.media-types.csv=text/csv
Run Code Online (Sandbox Code Playgroud)
当我发送带有 http 标头的 post 请求时Content-Type: text/csv,出现以下错误:
415:Content type 'text/csv' not supported
这是我的配置:
@Configuration
public class ContentNegotiationConfiguration implements WebMvcConfigurer {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer
.favorParameter(true) //favor &format=csv
.defaultContentType(MediaType.APPLICATION_JSON)
.parameterName(format);
//.mediaType("csv", new MediaType("text", "csv")) //also tried without success
}
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用 WebClient 通过 REST 调用另一个服务,但总是收到错误:
org.springframework.web.reactive.function.UnsupportedMediaTypeException:不支持内容类型“application/json”
所有分配都具有相同版本的依赖项,通过 Postman 调用资源效果很好。问题是当第一个应用程序充当代理(客户端)尝试调用第二个应用程序(服务)时
我的服务器资源:
@RequestMapping(value = "/properties")
@PutMapping(consumes = APPLICATION_JSON_UTF8_VALUE)
@ResponseStatus(CREATED)
public void saveProperty(@Valid @RequestBody PropertyForm form) {
service.save(new PropertyImpl(form));
}
Run Code Online (Sandbox Code Playgroud)
我的客户资源:
WebClient client = WebClient.create(serviceUrl);
Mono<Void> save(PropertyForm form) {
return client.put()
.uri("properties")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.body(BodyInserters.fromObject(form))
.retrieve()
.bodyToMono(Void.class);
}
Run Code Online (Sandbox Code Playgroud)
我的 build.gradle 文件:
dependencies {
compile "org.springframework.boot:spring-boot-starter-reactor-netty:2.0.4.RELEASE"
compile "org.springframework.boot:spring-boot-starter-web:2.0.4.RELEASE"
compile "org.springframework:spring-webflux:5.0.4.RELEASE"
compile "javax.xml.bind:jaxb-api:2.3.0"
}
Run Code Online (Sandbox Code Playgroud)
我是否缺少一些依赖项来启用 JSON contentType?这个例子很简单,但对我来说也很成问题。
表格型号:
class PropertyForm {
private String group;
private String key;
private String value;
// getters & setters
}
Run Code Online (Sandbox Code Playgroud)
来源: …
我正在寻找一种快速/简单的解决方案,如何自动将 Rest 控制器输出序列化为 CSV 而不是 JSON。我有最简单的 Spring boot 应用程序:
@SpringBootApplication
public class CsvExportApplication {
public static void main(String[] args) {
SpringApplication.run(CsvExportApplication.class, args);
}
}
class User {
String name;
String surname;
public User(String name, String surname) {
this.name = name;
this.surname = surname;
}
public void setName(String name) {
this.name = name;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
}
@RestController
class UserController …Run Code Online (Sandbox Code Playgroud) 我有一个 Spring webapp,它使用 HttpInvoker 连接到 Spring Boot 服务。我最近更新了服务项目以使用 Java 11,同时将其更新为 Spring Boot starter 2.1.3.RELEASE。服务项目提供了一个接口 jar,其中包含使用 HttpInvoker 时所需的所有请求和响应对象以及接口类。
我遇到了这个错误,但仅限于某些服务端点。我一直试图找出成功请求和失败请求之间的区别,但没有成功。
我试图解决问题的事情
谁能指出我正确的方向来解决这个问题......我现在真的在挠头
此错误的主要问题是服务接收来自 webapp 的请求,处理请求,然后响应。在远程回调的某个地方,我收到此错误,我的 web 应用程序响应异常,但在后台请求已成功完成。
以下是堆栈跟踪的一部分,我故意遗漏了一些,如果您需要更多信息,请告诉我。
java.io.StreamCorruptedException: Inconsistent vector internals
at java.base/java.util.Vector.readObject(Vector.java:1191) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1160) ~[na:na]
at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2216) ~[na:na]
at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2087) ~[na:na]
at …Run Code Online (Sandbox Code Playgroud) 我有一个@RestControllerWeb 服务方法,可能会通过长时间运行的服务调用来阻止响应线程。如下:
@RestController
public class MyRestController {
//could be another webservice api call, a long running database query, whatever
@Autowired
private SomeSlowService service;
@GetMapping()
public Response get() {
return service.slow();
}
@PostMapping()
public Response get() {
return service.slow();
}
}
Run Code Online (Sandbox Code Playgroud)
问题:如果 X 用户在这里调用我的服务怎么办?正在执行的线程将全部阻塞,直到返回响应。因此消耗了“最大连接数”、最大线程数等。
我记得前段时间读过一篇关于如何解决此问题的文章,通过以某种方式停放线程直到收到缓慢的服务响应。这样这些线程就不会阻塞,例如tomcat最大连接/池。
但我再也找不到它了。也许有人知道如何解决这个问题?
I'm looking to define /api as the root context for all my @RestControllers and don't want to specify it for each of them.
For instance, I would like to write @RestController("/clients") instead of @RestController("/api/clients") and make my request mappings available at /api/clients but have my static resources (in /main/resources/static) still served at /**.
So, setting server.servlet.contextPath=/api in application.properties is not a solution for my use case because the static resources will be served at /api, which …
spring-web ×10
spring ×8
java ×6
spring-boot ×6
spring-mvc ×3
rest ×2
httpinvoker ×1
jackson ×1
jaxb ×1
maven ×1
spring-cloud ×1
spring-rest ×1
validation ×1