400 bad request für den rest application/xml
Bin die Entwicklung von einfachen rest webservices mit jersey-Rahmen. Geschrieben @POST-Methode, die verbraucht und produziert sowohl { MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML
}. Mit chrome Voraus, rest-client zum aufrufen des web services. Webservices arbeitet wie erwartet unter application/json Anfrage
{"noSave": "Save", "dateCre":"14/12/2014"}
aber immer 400 bad request für die unter Applikation/xml-request
<?xml version="1.0" encoding="UTF-8">
<noSave>Save</noSave>
<dateCre>14/12/2014</dateCre>
gibt es keine Zusammenstellung von Fehlern im code. Jede Hilfe bei der Lösung der unten Problem ist geschätzt. unten ist der code, den ich geschrieben habe
Anfrage Objekt:
import java.math.BigDecimal;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Creation", propOrder = {
})
public class Creation {
@XmlElement(required = true)
protected String noSave;
@XmlElement(required = true)
protected String dateCre;
public String getNoSave() {
return noSave;
}
public void setNoSave(String value) {
this.noSave = value;
}
public String getDateCre() {
return dateCre;
}
public void setDateCre(String value) {
this.dateCre = value;
}
}
response-Objekt:
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MyResponse", propOrder = {
})
public class MyResponse {
@XmlElement(required = true)
protected String resString;
public String getResString() {
return resString;
}
public void setResString(String value) {
this.resString = value;
}
}
rest webservice:
import javax.validation.Valid;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path("/create")
public class CreateRequest {
@POST
@Produces({ MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML })
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
public Response createReq( @Valid Creation request)
{
System.out.println(" Request "+request.getNoSave());
MyResponse result = new MyResponse();
result.setResString(" Created with Number 123");
return Response.ok(result).build();
}
}
Unten ist der Fehler, bin immer in der chrome rest client
Status 400 Bad Request. Loading time: 4250
Request headers User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo
Content-Type: application/xml
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Response headers Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Language: en
Content-Length: 990
Date: Tue, 13 Jan 2015 13:53:11 GMT
Connection: close
ich habe auch versucht unten Stück code
@XmlRootElement(name="Creation")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Creation", propOrder = {
})
public class Creation {
- und unterhalb xml-request. Aber immer die gleichen Fehler
<?xml version="1.0" encoding="UTF-8">
<Creation>
<noSave>NoSave</noSave>
<dateCre>14/12/2014</dateCre>
</Creation>
folgende Fehlermeldung in den logs angezeigt wird
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Creation"). Expected elements are <{http://check.com/rrs}Creation>
- Zeigen Sie uns die Fehler-details.
- Status 400 Bad Request Beschreibung Anzeigen Ladezeit: 1013-Request-Header User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 Herkunft: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo Content-Type: application/xml Accept: / Accept-Encoding: gzip, deflate Accept-Language: en-GB,en-US;q=0.8,en;q=0.6 Response headers Server: Apache-Coyote/1.1 Content-Type: text/html;charset=utf-8 Content-Language: en Content-Length: 990 Datum: Tue, 13 Jan 2015 13:29:46 GMT Connection: close
- Oben ist die Fehlermeldung, die wird immer angezeigt.
- Plesase Bearbeiten Sie Ihre Frage und zählen die Fehlermeldung da. Bitte auch die relevanten log-Ausgabe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese
ist kein gültiges XML. Ein XML-Dokument sollte nur eine root-element. Eine im Falle Ihrer POJO-mapping des root-Elements werden sollte
<Creation>
. Also versuchen Sie es mitSollten Sie auch hinzufügen
@XmlRootElement
zu Ihrer KlasseGleiche für
MyResponse
Mit XML erhalten Sie eine Rendite
Kein Weg vorbei. Das ist, wie XML funktioniert.
UPDATE
Du bist auch fehlt ein
?
am Ende der xml-header.Obwohl der header ist auch nicht erforderlich. Einfach senden
Habe ich getestet und es funktioniert einwandfrei
package-info.java
Datei mit der@XmlSchema
definiert? Wenn dem so ist, wird die xml-davon aus, dass der namespace. Die xml Aussehen soll<Creation xmlns="http://check.com/rrs">
Ist es wahrscheinlich versuchen zu analysieren, Ihre Anfrage als xml-Dokument. Gültige XML-Dokumente müssen enthalten nur 1 root-Knoten.
http://en.m.wikipedia.org/wiki/Root_element