1

私はPHPWeb サービスを持っており、それをクエリしてユーザー インターフェイスを設定しています。JSONObject json = jParser.makeHttpRequest(url, "GET",params);渡された URL を無視し、代わりに最後に使用した PHP URL に対してクエリを実行しているという問題があります。

私のWebサービスはこれこれ

これを複製するには、editext1 で「EF」を検索し、ボタンを押します。次に、edittext1 の末尾から「F」を削除します。LayoutSpinner は、menuitems.php の代わりに test.php Web サービスを照会したため、'Civic' 'Hatch' 'Civic' 'Hatch' の 101 エントリでいっぱいになります。

setOnItemSelectedListenerスピナー コントロールのいずれかが変更されるたびにトリガーされる URL 文字列が設定されています。次に、バックグラウンド タスク LoadAllProducts を起動して、Web サービスにクエリを実行します。jParser.makeHttpRequest(url, "GET",params)ブレークポイントを使用して変数を監視することで、行が実行されたときに URL 文字列が menuitems.php を指していることを確認しました。他の誰かが以前にこの問題に遭遇したことがありますか?それを修正するには、どのルートに進む必要がありますか?

どんな助けでも大歓迎です。

これが私のコードです:

        // view products click event
        btnViewProducts.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view)              
                // Execute LoadAllProducts
                url =  "http://www.jankuyado.com/Components/test.php";
                new LoadAllProducts().execute();                        
            }


        // listener for EditText1 changes.
             @Override
            public void afterTextChanged(Editable s) {
                chassiscode = v.getText().toString(); //put the chassiscode into a global           variable.
                url =  "http://www.jankuyado.com/Components/menuitems.php";
                new LoadAllProducts().execute();
            }


    class LoadAllProducts extends AsyncTask<String, String, String>  {


        protected String doInBackground(String... args) {

            // Building Parameters
            List<NameValuePair> params = new ArrayList<NameValuePair>();
            params.add(new BasicNameValuePair("chassiscode",chassiscode));
            params.add(new BasicNameValuePair("Civic", model));
            params.add(new BasicNameValuePair("layout", layout));               

            // Creating JSON Parser object
            JSONParser jParser = new JSONParser();
         // getting JSON string from URL
            JSONObject json = jParser.makeHttpRequest(url, "GET",params);

                products = json.getJSONArray("components");
                productslist.clear(); //clear the productslist and start from scratch.



                    // looping through All Products

                    for (int i = 0; i < products.length(); i++) {
                        JSONObject c = products.getJSONObject(i);
                        if(url == "http://www.jankuyado.com/Components/test.php") {
                        //if components are being retrieved 


                        // adding HashList to ArrayList
                        productslist.add(c.getString("ComponentName"));


                        } else if (url == "http://www.jankuyado.com/Components/menuitems.php") {
                        //else if menu items are being retrieved.   
                            // Storing each json item in the productslist

                            if  (c.has("model")) {
                                MenuReturnType = "model"; //flag global variable MenuReturnType as returning car Models (used later when parsing the Productlist).
                                productslist.add(c.getString("model"));                                                             
                            }

                            if  (c.has("layout")) {
                                MenuReturnType = "layout"; //flag global variable MenuReturnType as returning car Layouts (used later when parsing the Productlist).
                                productslist.add(c.getString("layout"));
                            }


                        }
                    }
            }


            return null;
        }


        protected void onPostExecute(String file_url) {


            // updating UI from Background Thread
            runOnUiThread(new Runnable() {
                public void run() {
           //stuff that updates ui here
4

1 に答える 1

0

解決しました。

JSONParser クラスは、特定の条件下で .php クエリからジャンク データを取得していました。これが何らかの理由で発生した場合、JSONParser は null ではなく、最後に成功した JSON クエリ出力を返しました。これを修正し、コードが null JSONArray を処理するようにすると、すべてが正常に機能しました。

于 2013-03-29T03:42:18.657 に答える