我使用最新版本的java Spring放心。我尝试用post方法和json body(contentType是应用程序/json)模拟调用进行身份验证,但是当我的请求被我的java Spring应用程序拦截时,主体是空的...但空的身体不是。
我可以通过ngrep和一些函数看到所有请求都正确完成。
当我从js客户端使用curl、postman或ajax时,我没有这个问题
@EnableAutoConfiguration
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserControllerImplTest {
@Test
public void testUserAuthenticateWitParams200() {
Map<String, Object> jsonAsMap = new HashMap<>();
jsonAsMap.put("email", "groschat.eu@gmail.com");
jsonAsMap.put("password", "groschat93**");
given().log().all()
.body(jsonAsMap)
.contentType("application/json; charset=UTF-8").
when()
.post(String.format("http://localhost:%s/api/users/authenticate", port))
.peek().
then()
.statusCode(is(200));
}
}
以下是来自peek()函数的日志:
Request method: POST
Request URI: http://localhost:53850/api/users/authenticate
Proxy: <none>
Request params: <none>
Query params: <none>
Form params: <none>
Path params: <none>
Headers: Accept=*/* Content-Type=application/json; charset=UTF-8
Cookies: <none>
Multiparts: <none>
Body:
{
"password": "groschat93**",
"email": "groschat.eu@gmail.com"
}
以下是chrome内部开发工具的请求
请求标头:
POST /api/users/authenticate HTTP/1.1
Host: back-spring.dev
Connection: keep-alive
Content-Length: 62
Origin: https://front.dev
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Content-type: application/json
Accept: */*
Referer: https://front.dev/
Accept-Encoding: gzip, deflate, br
Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7
请求有效载荷:
{"email":"martinbryan.eu@gmail.com","password":"groschat93**"}
问题是Tomcat和标题内容类型中无用的分号。Tomcat无法读取带有分号且后面没有字符集的内容类型。因此,在服务器端读取请求时,默认的内容类型为text/plain。重新发行
所以我改变tomcat的暗流,我不使用放心了,但WebTestClient。请参见代码和pom.xml.这个问题的来源是意料之中的。
@AutoConfigureWebTestClient
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@ContextConfiguration(
classes={
server_spring.Application.class,
server_spring.config.WebSecurityConfig.class,
server_spring.config.GlobalConfiguration.class,
server_spring.config.MvcConfig.class,
server_spring.config.WebConfig.class
})
public class UserControllerImplTest {
@Autowired
private WebTestClient webClient;
@Test
public void testWithAnotherMethod() {
Map<String, String> jsonMap = new HashMap();
jsonMap.put("email","martinbryan.eu@gmail.com");
jsonMap.put("password","groschat93**");
webClient
.post()
.uri("/api/users/authenticate")
.header("Origin","https://front.dev")
.header("Referer","https://front.dev")
.header("Host", "back-spring.dev")
.contentType(MediaType.APPLICATION_JSON)
.body(BodyInserters.fromObject(jsonMap))
.exchange()
.expectStatus()
.isOk();
}
}
我的pom。xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
<version>RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
服务器没有看到我的JSON参数。我用邮差检查服务器,一切正常。
问题内容: 我正在使用ReactJS + Redux,以及Express和Webpack。有一个内置的API,我希望能够从客户端进行REST调用- GET,POST,PUT,DELETE。 使用Redux架构的方式和正确方法是什么?就简化程序,动作创建者,存储和反应路线而言,任何有关流程的良好示例都将非常有帮助。 先感谢您! 问题答案: 最简单的方法是使用package进行操作。这个软件包是一个r
我有一个quarkus应用程序,当我用下面的命令构建应用程序时,进程第一次开始完美地编译quarkus:dev-DskipTests=true 成功启动的日志: 但是当我停下来重新开始这个过程时,过程并没有开始... 启动失败的日志: 当我尝试重新启动机器,然后启动quarkus服务时,它会再次工作。 pom。xml: 如果有人遇到过类似的行为,请告诉我,这可能是什么根源。
更新: 这会导致我的应用程序出现错误,因为其他bean无法初始化。奇怪的是它在Eclipse上运行得很好。 我有一个名为DataService的类,它扩展了JDBCTemplate。在我的DataService构造函数中,我注入了数据源。 我在其他bean中使用这个DataService类来执行DB操作。我的数据源在我的文件中定义 这是我的application.java类 当我尝试使用Maven
根据这个链接,我可以创建一个测试应用程序,Robolectric将自动开始在测试中使用它。我不能让它运转起来。 我正在使用Dagger进行依赖注入,并为和创建了注入包装类。那么我的每个活动都扩展了包装器活动类,而不是简单的旧。
我想在内存使用效率方面比较Java程序的不同实现。有不同的使用场景被表述为JUnit测试用例。实际上,所有的代码都是开源的:https://github.com/headissue/cache2k-benchmark 获取Java程序已用内存的一般方法是:,当然也可以使用JMX接口来获取这些值。 但是,已使用内存的确定值不可靠。可能的原因: 可能有未收集的垃圾 有碎裂,如果GC没有压缩 到目前为止