Android API在第一个API的成功块中调用第二个API调用

时间:2019-03-13 07:36:36

标签: java android api

请帮助我解决第一个API响应,并且在第一个API成功模块中调用第二个API的情况。我也收到第二个API响应,但格式不是

必需

{
  "colName": [
    "Type",
    "6 days"
  ],
  "row1": [
    "BASE RATE",
    102.54
  ],
  "row2": [
    "EXTRA DAY",
    17.09
  ]
}

获取

{
  "colName": [
    "Type",
  ],
  "row1": [
    "BASE RATE",
  ],
  "row2": [
    "EXTRA DAY",
  ]
}

一个接一个击中两个api后,我在邮递员中得到了同样的反应

代码

API 1

class GetReservationExtraData extends AsyncTask<Void, Void, Void> {

    String response = "";

    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(getContext(), "Info", "Loading... Please Wait.", true, false);
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... voids) {

        try {
            JSONObject postData = new JSONObject();
            postData.put("discountRate", "0");              
            response = NetworkCall.postSync(Constants.getExtraDataURLPost(), postData.toString());
            return null;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        try {
            if (progressDialog.isShowing())
                progressDialog.dismiss();

                    new GetReservationExtraAmountData().execute();
        } catch (Exception e) {
            e.printStackTrace();
        }
        super.onPostExecute(aVoid);
    }
}

API 2

class GetReservationExtraAmountData extends AsyncTask<Void, Void, Void> {

    String response = "";

    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(getContext(), "Info", "Loading... Please Wait.", true, false);
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(Void... voids) {

        try {
            JSONObject postData = new JSONObject();
            postData.put("contractId", "");
            response = NetworkCall.postSync(Constants.getExtraAmountDataURLPost(), postData.toString());
            return null;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        try {
            response.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        super.onPostExecute(aVoid);
    }
}

3 个答案:

答案 0 :(得分:1)

因为我没有您最后使用的网址,但我尝试了几个网址,这些网址的响应中有下拉列表,而且我的 WebView 在设备上运行良好。

我测试的设备是PIXEL 2, Samsung Galaxy S20+, S10+

这是我在项目中用于 AndroidX 的依赖项。

<块引用>

特别是,我建议先更新依赖。

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.5.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
implementation 'com.google.android.material:material:1.3.0'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'

WebView 的代码非常正常。

binding.webView.settings.apply {
     // TODO Depending upon your requirement you can use these setting to be applied before loading the URL.
     // javaScriptEnabled = true
     // loadWithOverviewMode = true
     // javaScriptCanOpenWindowsAutomatically = true
}

binding.webView.apply {
    webViewClient = object : WebViewClient() {
        override fun shouldOverrideUrlLoading(
            view: WebView,
            url: String
        ): Boolean {
            Log.e("url coming from server", url)
            view.loadUrl(url)
                    return false;
        }
   }
   loadUrl("The URL you want to load here")
}

如果最终还是不行,那么你可以分享一下你的活动代码。

答案 1 :(得分:0)

您正在调用的对象已死亡,因为其托管进程不再存在。 refer to this thread

答案 2 :(得分:0)

问题 - 我正在扩展 BaseActivity 类而不是 AppCompat Activity。

自从我最近在基本活动中为我的应用添加了短语,网络视图下拉菜单崩溃了。

我只是使用了下面的代码

WebViewActivity extends AppCompatActivity