gpt4 book ai didi

java - json .makeHttpRequest(url, "GET",params) 多次调用时忽略 URL 参数? Android/PHP Web 服务问题

转载 作者:行者123 更新时间:2023-12-01 04:47:21 26 4
gpt4 key购买 nike

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

我的网络服务是 thisthis

要复制此操作,请在 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。一旦我解决了这个问题并让我的代码处理 null JSONArray 返回,一切都正常工作。

关于java - json .makeHttpRequest(url, "GET",params) 多次调用时忽略 URL 参数? Android/PHP Web 服务问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15607541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com