Jaxb не заполняет объект во время UnmarshalJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Jaxb не заполняет объект во время Unmarshal

Сообщение Anonymous »

Я немного потерян в этот момент. Я ни в коем случае не являюсь экспертом SOAP/JAXB, однако я пытаюсь создать общий класс, который будет маршал/вызовет/Unmarshal для любого услуги. Я использую WSDL метеорологической службы в качестве отправной точки, чтобы доказать концепцию. Может ли кто -нибудь помочь в определении того, что я делаю неправильно? Я также ищу хорошее объяснение ответа, если это возможно, чтобы я мог извлечь уроки из этого опыта. Проблема в том, что ценность getCityWeatherByziPresponse.getCityWeatherByziPresult выходит ноль. Я знаю, что документ возвращает правильные результаты, так как распечатка результата выглядит следующим образом: < /p>

Результат распечатка: < /p>



true
City Found
MO
Saint Charles
Farmington
4
Sunny
79
47
CALM
30.00S






Response: GetCityWeatherByZIPResult: null
< /code>

Тестовая веб -служба:
http://wsf.cdyne.com/weatherws/weather. ... азно@Given("I call the weather soap service")
public void givenICallTheWeatherSoapService() {
GetCityWeatherByZIP weather = new GetCityWeatherByZIP();
weather.setZIP("63304");
try {
new WeatherTools();
WeatherSoap weatherSoap = new WeatherSoap();
GetCityWeatherByZIPResponse response = weatherSoap.getCityWeatherByZip("63304");
System.out.println("Response: " + response);
} catch (JAXBException | ParserConfigurationException | SOAPException | IOException e) {
Assert.fail(e.getMessage());
}
}
< /code>

Класс службы SOAP: < /p>

public class WeatherSoap extends PTFSoapClient {

public WeatherSoap() throws JAXBException, ParserConfigurationException, SOAPException {
super(PTFApplication.getConfig(Environment.executionEnv.getEnv(), "Weather SOAP endpoint"));
}

public GetCityWeatherByZIPResponse getCityWeatherByZip(String zip) throws JAXBException, SOAPException, IOException {
GetCityWeatherByZIP weatherByZip = new GetCityWeatherByZIP();
weatherByZip.setZIP(zip);
try {
sendRequest(weatherByZip);
return (GetCityWeatherByZIPResponse) unmarshallResponse(GetCityWeatherByZIPResponse.class);
} catch (ParserConfigurationException | XMLStreamException e) {
e.printStackTrace();
return null;
}
}
}
< /code>

Класс базовой структуры.public class PTFSoapClient {
private JAXBContext context;
private Marshaller marshaller;
private Object object;
private SOAPMessage message;
private String endpoint;
private SOAPMessage response;

public PTFSoapClient(String endpoint) {
this.endpoint = endpoint;
}

public void toConsole() throws JAXBException, SOAPException, IOException {
message.writeTo(System.out);
System.out.print("\n");
}

public SOAPMessage sendRequest(Object obj) throws JAXBException, ParserConfigurationException, SOAPException {
object = obj;
context = JAXBContext.newInstance(obj.getClass());
marshaller = context.createMarshaller();

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
Document doc = dbf.newDocumentBuilder().newDocument();
marshaller.marshal(object,doc);
MessageFactory factory = MessageFactory.newInstance();
message = factory.createMessage();
message.getSOAPBody().addDocument(doc);
message.saveChanges();

SOAPConnection connection = SOAPConnectionFactory.newInstance().createConnection();
response = connection.call(message, endpoint);
connection.close();

try {
System.out.println("Response:");
response.writeTo(System.out);
System.out.println("");
} catch (IOException e) {
e.printStackTrace();
}

return response;
}

public Object unmarshallResponse(Class classname) throws JAXBException, XMLStreamException, SOAPException, IOException {
Document doc = response.getSOAPBody().extractContentAsDocument();
try {
System.out.println("Document: ");
printDocument(doc, System.out);
System.out.println("");
} catch (TransformerException e) {
e.printStackTrace();
}

Unmarshaller unmarshaller = JAXBContext.newInstance(classname).createUnmarshaller();
return unmarshaller.unmarshal(doc);
}

public static void printDocument(Document doc, OutputStream out) throws IOException, TransformerException {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");

transformer.transform(new DOMSource(doc),
new StreamResult(new OutputStreamWriter(out, "UTF-8")));
}
}
< /code>

Базовый объект Unmarshal: < /p>

@XmlRootElement(name = "GetCityWeatherByZIPResponse",
namespace = "http://ws.cdyne.com/WeatherWS/")
public class GetCityWeatherByZIPResponse {
GetCityWeatherByZIPResult GetCityWeatherByZIPResult;

public GetCityWeatherByZIPResult getGetCityWeatherByZIPResult() {
return GetCityWeatherByZIPResult;
}

public void setGetCityWeatherByZIPResult(GetCityWeatherByZIPResult GetCityWeatherByZIPResult) {
this.GetCityWeatherByZIPResult = GetCityWeatherByZIPResult;
}

@Override
public String toString() {
return "GetCityWeatherByZIPResult: " + GetCityWeatherByZIPResult;
}
}
< /code>

sub umarshal объект: < /p>

public class GetCityWeatherByZIPResult {
boolean Success;
String ResponseText;
String State;
String City;
String WeatherStationCity;
String WeatherID;
String Description;
int Temperature;
int RelativeHumidity;
String Wind;
String Pressure;
String Visibility;
String WindChill;
String Remarks;

public boolean isSuccess() {
return Success;
}

public void setSuccess(boolean success) {
Success = success;
}

public String getResponseText() {
return ResponseText;
}

public void setResponseText(String responseText) {
ResponseText = responseText;
}

public String getState() {
return State;
}

public void setState(String state) {
State = state;
}

public String getCity() {
return City;
}

public void setCity(String city) {
City = city;
}

public String getWeatherStationCity() {
return WeatherStationCity;
}

public void setWeatherStationCity(String weatherStationCity) {
WeatherStationCity = weatherStationCity;
}

public String getWeatherID() {
return WeatherID;
}

public void setWeatherID(String weatherID) {
WeatherID = weatherID;
}

public String getDescription() {
return Description;
}

public void setDescription(String description) {
Description = description;
}

public int getTemperature() {
return Temperature;
}

public void setTemperature(int temperature) {
Temperature = temperature;
}

public int getRelativeHumidity() {
return RelativeHumidity;
}

public void setRelativeHumidity(int relativeHumidity) {
RelativeHumidity = relativeHumidity;
}

public String getWind() {
return Wind;
}

public void setWind(String wind) {
Wind = wind;
}

public String getPressure() {
return Pressure;
}

public void setPressure(String pressure) {
Pressure = pressure;
}

public String getVisibility() {
return Visibility;
}

public void setVisibility(String visibility) {
Visibility = visibility;
}

public String getWindChill() {
return WindChill;
}

public void setWindChill(String windChill) {
WindChill = windChill;
}

public String getRemarks() {
return Remarks;
}

public void setRemarks(String remarks) {
Remarks = remarks;
}
}


Подробнее здесь: https://stackoverflow.com/questions/266 ... -unmarshal
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»