URL-JUnit测试中的Jersey 1.19 Grizzly 2.3.25和Umlaute不起作用,而浏览器访问不起作用
在RESTFul Jersey解决方案中,我尝试接收包含德语Umlaut字符的URL,例如URL-JUnit测试中的Jersey 1.19 Grizzly 2.3.25和Umlaute不起作用,而浏览器访问不起作用,url,jersey,grizzly,Url,Jersey,Grizzly,在RESTFul Jersey解决方案中,我尝试接收包含德语Umlaut字符的URL,例如 http://localhost:8085/hello/hello/echo/ÄÖÜßööü 当我用浏览器输入这样的URL时,我会得到正确的结果。 当我使用JUnit测试进行测试时,它不起作用 org.junit.ComparisonFailure: expected:<[ÄÖÜßäöü]> but was:<[ÃÃÃÃäöü]> at org.junit.Asse
http://localhost:8085/hello/hello/echo/ÄÖÜßööü
当我用浏览器输入这样的URL时,我会得到正确的结果。
当我使用JUnit测试进行测试时,它不起作用
org.junit.ComparisonFailure: expected:<[ÄÖÜßäöü]> but was:<[ÃÃÃÃäöü]>
at org.junit.Assert.assertEquals(Assert.java:115)
at org.junit.Assert.assertEquals(Assert.java:144)
at com.bitplan.rest.test.TestHello.testUmlaute(TestHello.java:43)
因此,Grizzly/Jersey似乎没有正确处理url
如何修复或解决此问题?
我发现:并尝试了不同的编码,如中建议的编码,但没有任何区别
我还设置了
server.getServerConfiguration().setDefaultQueryEncoding(Charsets.UTF8_CHARSET);
如中所述,但仍然没有运气
JUnit测试
看
@测试
public void testUmlaute()引发异常{
super.startServer();
URI=新的URI(“http://localhost:8085/hello/hello/echo/ÄÖÜßäöü");
System.out.println(uri.toASCIIString());
System.out.println(uri.toString());
WebResource wrs=Client.create().resource(uri);
String result=wrs.accept(“text/html;charset=utf-8”).get(String.class);
资产质量(“结果”);
}
“Hello/Echo”资源
package com.bitplan.hello.resources;
导入javax.ws.rs.GET;
导入javax.ws.rs.Path;
导入javax.ws.rs.PathParam;
导入javax.ws.rs.products;
导入javax.ws.rs.core.Context;
导入javax.ws.rs.core.Request;
导入javax.ws.rs.core.UriInfo;
@路径(“/hello”)
/**
*简单Hello资源
*@author wf
*
*/
公共类HelloResource{
@上下文
UriInfo-UriInfo;
@上下文
请求;
@得到
公共字符串getHello(){
回复“你好”;
}
@得到
@生成(“文本/html”)
@路径(“echo/{value}”)
公共字符串getEcho(@PathParam(“value”)字符串值){
System.out.println(request.getMethod()+“:”+uriInfo.getPath());
返回值;
}
}
maven依赖关系
1.19.1
2.3.25
...
...
泽西岛
球衣束
${jersey.version}
泽西岛
泽西灰熊2
${jersey.version}
泽西岛
jersey-grizzly2-servlet
${jersey.version}
org.glassfish.grizzly
grizzly http服务器
${grizzly.version}
org.glassfish.grizzly
grizzly http servlet
${grizzly.version}
org.glassfish.grizzly
grizzly http
${grizzly.version}
玻璃鱼
javax.servlet
3
假如
如果您说它在同一台服务器上的浏览器上工作,这不意味着问题可能出在客户端吗?可能是这样。但是服务器应该能够处理url的编码版本和非编码版本。请你。共享完整的测试用例,这样我们就可以复制?您缺少什么?最好在github上有一个项目,检查它并运行/测试如果您说它可以在同一台服务器的浏览器上工作,这不意味着问题可能在客户端?可能是这样。但是服务器应该能够处理url的编码版本和非编码版本。请你。共享完整的测试用例,这样我们就可以复制?您缺少了什么?在github上有一个项目,检查它并运行/测试会很好
server.getServerConfiguration().setDefaultQueryEncoding(Charsets.UTF8_CHARSET);