0

クライアントおよびサーバー環境で文字列配列を返すのに問題があります。クライアントアプリケーションをコンパイルしたときに得られる結果は何もありません。

サーバーアプリケーション

public String[] getFlight() throws Exception {

     AvailableFlights todayFlight = new AvailableFlights();
    List<Flight> flights_today =  todayFlight.getFlightDetail();

    List<String> flights = new ArrayList<String>(); 

    try {
        flights_today = this.unmarshal(new File("Flights.xml"));

            for (Flight flight : flights_today) {
        String flightDetail = flight.getJourney() 
                    + " " + flight.getAirline() 
                    + " "+ String.valueOf(flight.getConnections())
                    + " "+ String.valueOf(flight.getCost())
                    + " "+ flight.getDestination()
                    + " "+ flight.getOrigin()
                    + " "+ String.valueOf(flight.getSeats()); 
                flights.add(flightDetail);
                System.out.println(flightDetail);
                }

      } catch (Exception e) {

      }

    return (String[]) flights.toArray();
 }

クライアントJavaアプリケーション

import org.me.kettravel.*;


public class JavaApplication5 {   

    public static void main(String[] args) {

        try {
    System.out.println(getFlight());
        } catch (Throwable ex) {          
        }   
    }

    private static java.util.List<java.lang.String> getFlight() throws Exception_Exception {
        org.me.kettravel.ReadFlightService service = new org.me.kettravel.ReadFlightService();
        org.me.kettravel.ReadFlight port = service.getReadFlightPort();
        return port.getFlight();
    }

さらに、サーバーアプリで以下のような「こんにちは」を使って小さな実験を試みましたが、正常に機能したため、Webサービスは正常に機能していることはわかっていますが、フライトの文字列配列をクライアントに渡したり返したりできないようです。アプリ。

String i = "hello"; 
return i;

PS:public static void main (String[] args) {コンストラクターを使用してサーバーアプリをリターンなしで実行しようとすると、アプリはアンマーシャリングxmlからarraylistを完全に出力し、arraylistに変換して実行しますsystem.out.print

私は本当にこれに固執しているので、誰かがいくつかの光を当てることができれば幸いです。ありがとう。

2012年4月1日(19:16) -Genzerによって調整が提案されましたが、クライアントアプリはまだサーバーアプリから応答を受け取りません。

2012年4月1日(23:24) -ボヘミアンによって提案された調整が行われました。以下を参照してください。クライアントアプリはエラーチェックを取得しています。javax.xml.ws.soap.SOAPFaultException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

public static void main(String[] args) {
    try {
        Object obj = getFlight();
System.out.println(obj);
    } catch (Throwable ex) { 
        System.out.println(ex);
    }   
}

2013年6月1日(16:20)-XMLファイルがテストごとに空だったので、間違いに対処しましたが、xmlファイルにデータが含まれています。readFlightが同じプロジェクト/ソースパッケージにあるクラスに何かを返すかどうかを確認するためのテストクラスを作成しました。結果は成功です...本当にアイデアが不足しています=/クライアントアプリに単純なhello文字列を送信してWebサービスをテストしたので、問題なく動作しました。

テストクラス パブリッククラステスト{

public static void main(String[] args) {

readFlight rF = new readFlight();

    try {
System.out.println(rF.getFlight());
    } catch (Throwable ex) { 
        System.out.println(ex);
    }       
}

}

テストクラスからの出力: [London to Amsterdam KLM 1 200.0 Amsterdam London 100, London to Kuala Lumper Malaysia Airline 1 750.0 Kuala Lumper London 100, London to Manchester British Airway 1 50.0 Manchester London 56]

2013年10月1日(18:13) -問題は解決しました。unmarshallファイルに完全なディレクトリを指定する必要があります。例:C:/Users/User/Documents/NetBeansProjects/WebService/booking.xml

4

3 に答える 3

1

問題は、という名前の2つの異なる変数があることですflights。一方にデータを入力し、もう一方を返します。

于 2013-01-04T15:42:12.590 に答える
0

次のようにメソッドを削除public static String[] flightsおよび変更できます。

public List<String> getFlight() throws Exception {

    Flight nextFlight = new Flight();
    AvailableFlights todayFlight = new AvailableFlights();
    List<Flight> flights_today =  todayFlight.getFlightDetail();

    // Since you you List for Flight, why not here
    List<String> flights = new ArrayList<String>(); 

    try {
        flights_today = readFlight.unmarshal(new File("Flights.xml"));

        for (Flight flight : flights_today) {
            String flightDetail = flight.getJourney() 
                    + " " + flight.getAirline() 
                    + " "+ String.valueOf(flight.getConnections())
                    + " "+ String.valueOf(flight.getCost())
                    + " "+ flight.getDestination()
                    + " "+ flight.getOrigin()
                    + " "+ String.valueOf(flight.getSeats());
            flights.add(flightDetail);
        }
      } catch (Exception e) {

      }

    return flights;
 }
于 2013-01-04T16:23:09.490 に答える
0

問題を隠している可能性のある「ノーノー」をコミットしました。

catch (Exception e) {
}

例外を(まあ、めったに)キャッチしてはいけません。特にキャッチブロックが空の場合。

NullPointerExceptionのようなチェックされていない例外がループ内でスローされる可能性がありますが、わかりません。

キャッチを削除し、スローされると宣言されている特定の例外(存在する場合)のみを残してみてください。

メソッドの1つが例外のスローとして宣言されている場合は、少なくとも次のようにする必要があります。

catch (Exception e) {
    System.out.println(e);
}
于 2013-01-04T19:24:11.783 に答える