возможно передать объект 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();
}
Всего 1 ответ
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, Приложение 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"}'
На основании предоставленной вами информации для меня не имеет смысла, почему вы получаете запрос, в котором QUOTATION MARK кодируется в процентах, а не влево, вправо и вправо. Ваш URI выглядит так, как будто кто-то решил свернуть свой собственный URI-кодировщик и неправильно обработал все «специальные символы».
Чтобы убедиться, что это проблема на стороне вашего java-скрипта, а не на java-сервере, работающем на сервере, можно посмотреть на генерируемый HTTP-запрос и проверить значение, используемое в качестве target-uri для запроса: если в запросе указано неверное правописание, то сервер, безусловно, не имеет отношения к проблеме (кроме сообщения о ней).