json .makeHttpRequest(url, "GET",params)忽略url参数与多个


json .makeHttpRequest(url, "GET",params) ignoring the URL parameter with multiple calls? Android / PHP web service issue

我有一个PHP web服务,并正在查询它以填充用户界面。我有一个问题,JSONObject json = jParser.makeHttpRequest(url, "GET",params);忽略了传递给它的URL,而是对最后使用的PHP URL运行查询。

我的web服务是这个和这个

要复制此操作,在editext1中搜索'EF'并按下按钮。然后,从edittext1的末尾删除'F'。LayoutSpinner将填满101个'Civic' 'Hatch' 'Civic' 'Hatch'条目,因为它查询的是test.php web服务,而不是menuitems.php。

URL字符串由setOnItemSelectedListener设置,当任何旋转控件更改时触发。然后,它触发后台任务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

已解决。

JSONParser类在某些条件下从.php查询中获得一些垃圾数据。当由于某种原因发生这种情况时,JSONParser返回最后一个成功的JSON查询输出,而不是null。一旦我解决了这个问题,并使我的代码处理一个空JSONArray返回一切正常工作。