作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
可以传递一个 json 对象来获取我正在尝试的请求,但我错过了以下错误
Caused by: java.net.URISyntaxException: Illegal character in query at index 46: https://localhost/Pro-Ing/rest/pedidos/prueba?{%22codigo%22:%22qwdasdas%22,%22id%22:%221%22}
这是 javascript 方法
function hola(){
var id= prompt('hola');
var id2= prompt('hola');
codigo = {};
codigo['codigo'] = id;
codigo['id'] = id2;
$.ajax({
url : "rest/pedidos/prueba",
contentType : "application/json",
dataType : "json",
type : "GET",
data : JSON.stringify(codigo),
success : function(data) {
jqmSimpleMessage('Paso');
}
error : function(error) {
if (error.status == 401) {
desAuth();
} else {
jqmSimpleMessage("error -" + error.responseText);
}
},
beforeSend : function(xhr, settings) {
xhr.setRequestHeader('Authorization', 'Bearer '
+ getVCookie(getVCookie("userPro")));
}
});
}
这是java接收对象的方法
@GET
@Path("/prueba")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response gendup(confirmacion usu,@Context SecurityContext securityContext) {
registro(securityContext, 0, "");
confirmacion confirmacion = null;
Response.ResponseBuilder builder = null;
return builder.build();
}
最佳答案
Illegal character in query at index 46: https://localhost/Pro-Ing/rest/pedidos/prueba?{%22codigo%22:%22qwdasdas%22,%22id%22:%221%22}
Java 中的数组是从零开始的,所以
01234567890123456789012345678901234567890123456
https://localhost/Pro-Ing/rest/pedidos/prueba?{%22codigo%22:%22qwdasdas%22,%22id%22:%221%22
^
RFC 3986, Appendix A 描述查询中允许使用哪些字符
query = *( pchar / "/" / "?" )
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
pct-encoded = "%" HEXDIG HEXDIG
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
所以你在这里遇到的问题是你的java解析器对URI中允许使用哪些字符非常严格,并且左大括号{
和右大括号}
都不是> 是有效的——它们也需要进行百分比编码。
https://localhost/Pro-Ing/rest/pedidos/prueba?%7B%22codigo%22:%22qwdasdas%22,%22id%22:%221%22%7D
此 URI(带有按规范要求编码的括号百分比)应满足 java 代码。
我猜 JSON.stringify 正在做我们期望的事情:
> JSON.stringify({"codingo":"qwdasdas","id":"1"})
'{"codingo":"qwdasdas","id":"1"}'
根据您提供的信息,对我来说没有任何意义的是为什么您收到的查询中引号被编码为百分比,而不是左花括号和右花括号。您的 URI 看起来像是有人决定推出自己的 URI 编码器,并且没有正确处理所有“特殊字符”。
验证问题是否出在您的 java 脚本端而不是服务器上运行的 java 的方法是查看正在生成的 HTTP 请求,并验证用作 target-uri 的值请求:如果查询请求中存在无效拼写,那么服务器肯定与该问题无关(除了报告该问题之外)。
关于java - 可以传递一个 json 对象来获取我正在尝试的请求,但我错过了以下错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138583/
我无法在附加行中显示“真”、“假”、"is"和“否”按钮。 我在这里有一个应用程序:Application 请按照以下步骤使用应用程序: 1。当你打开应用程序时,你会看到一个绿色的加号按钮,点击 在此
我是一名优秀的程序员,十分优秀!