0

我在 Android Studio 中实现 Amadeus API 时遇到问题。这是我的第一个 Android 应用程序,所以这是我第一次使用 AsyncTask 等。

这是我的崩溃报告:

正如你所看到的,这条单一的崩溃线很突出:

引起:java.lang.NumberFormatException:对于输入字符串:“2017-07-06”

从日志中:api 正在完成它的工作,但由于输入字符串异常,最终以某种方式崩溃。

noman.places.example 我/标签:{

                                                         "origin" : "FRA",
                                                         "currency" : "EUR",
                                                         "results" : [ {
                                                           "destination" : "LON",
                                                           "departure_date" : "2017-07-06",
                                                           "return_date" : "2017-07-07",
                                                           "price" : "258.87",
                                                           "airline" : "BA"
                                                         } ]
                                                       }

                                                       --------- beginning of crash 06-05 00:46:59.142 18633-18652/noman.places.example

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 Process: noman.places.example, PID: 18633 java.lang.RuntimeException: 在 android.os.AsyncTask$3.done(AsyncTask.java:325 执行 doInBackground() 时出错) 在 java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 在 java.util.concurrent.FutureTask.setException(FutureTask.java:223) 在 java.util.concurrent.FutureTask。在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent 运行(FutureTask.java:242)。 java.lang.Thread.run(Thread.java:761) 处的 ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 原因:java.lang.NumberFormatException:对于输入字符串:java 处的“2017-07-06”。朗朗。parseLong(Long.java:443) 在 java.lang.Long.parseLong(Long.java:485) 在 com.google.gson.JsonPrimitive.getAsLong(JsonPrimitive.java:238) 在 io.swagger.client.JsonUtil$1。在 com.google.gson.TreeTypeAdapter.read(TreeTypeAdapter.java:58) 在 com.google.gson 的 io.swagger.client.JsonUtil$1.deserialize(JsonUtil.java:35) 反序列化(JsonUtil.java:37)。 internal.bind.ReflectiveTypeAdapterFactory$1。在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:196) 处读取 (ReflectiveTypeAdapterFactory.java:103) 在 com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java: 40) com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81) com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60) 在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:196) 在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:103)。 google.gson.Gson.fromJson(Gson.java:810) at com.google.gson.Gson.fromJson(Gson.java:775) at com.google.gson.Gson.fromJson(Gson.java:724) at io .swagger.client.JsonUtil。deserializeToObject(JsonUtil.java:55) 在 io.swagger.client.ApiInvoker.deserialize(ApiInvoker.java:256) 在 io.swagger.client.api.DefaultApi.flightInspirationSearch(DefaultApi.java:1085) 在 noman.places.example .MapsActivity$AmadeusTask.doInBackground(MapsActivity.java:144) 在 noman.places.example.MapsActivity$AmadeusTask.doInBackground(MapsActivity.java:125) 在 android.os.AsyncTask$2.call(AsyncTask.java:305) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.runWorker(ThreadPoolExecutor.runWorker) 的 java.util.concurrent.FutureTask.run(FutureTask.java:237) java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:761)237) 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:761)237) 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:761)第1133章)第1133章)

这是我对 API 的实现:

private class AmadeusTask extends AsyncTask<Void, Void, Void> {
        protected Void doInBackground(Void... task) {
            DefaultApi apiInstance = new DefaultApi();
            String apikey = "AkEzmf5bDGatkBld2PNjJfvRna3hHbZP";
            String org = "FRA";
            String dest = "LON";
            String depDate = "2017-07-06";
            Boolean oneWay = false;
            String duration = "1";
            Boolean direct = true;
            String maxPrice = "1000";
            String lat = "46.6734";
            String lon = "-71.7412";

            try {
                ExtremeSearchResponse test = apiInstance.flightInspirationSearch(apikey, org, dest,depDate,oneWay,duration,direct,maxPrice,"DAY");
            }   catch (InterruptedException e) {
                e.printStackTrace();
            } catch (ExecutionException e) {
                e.printStackTrace();
            } catch (ApiException e) {
                e.printStackTrace();
            } catch (TimeoutException e) {
                e.printStackTrace();
            }
            return null;}

   protected void onProgressUpdate(Integer... progress) {
    }

    protected void onPostExecute(Long result) {
    }
}

如果有人能告诉我这不是 API 中的错误,而是异步任务实现的问题,我会很高兴。

4

0 回答 0