以下は項目のリストから検索するコードです。しかし、それはjson.JSONExceptionを与えます:毎回ProductListエラーの値がなく、「サーバを接続できません。後で試してください。」というメッセージが表示されます。json.JSONException:ProductListの値がありません
class myAsyncTask extends AsyncTask<String, Void, String>{
JSONParser jParser;
JSONArray productList;
String url = new String();
String textSearch;
ProgressDialog pd;
@Override
protected void onPreExecute(){
super.onPreExecute();
productList = new JSONArray();
jParser = new JSONParser();
pd = new ProgressDialog(getActivity());
pd.setCancelable(false);
pd.setMessage("Searching....");
pd.getWindow().setGravity(Gravity.CENTER);
pd.show();
}
@Override
protected String doInBackground(String... sText){
url= "http://demo5657559.mockable.io/getitems"+sText[0];
String returnResult = getProductList(url);
this.textSearch = sText[0];
return returnResult;
}
public String getProductList(String url){
Product tempProduct = new Product();
String matchFound = "N";
Log.d("Tatheer", "productResults size - "+productResults.size());
try{
JSONObject json = jParser.getJSONFromUrl(url);
productList = json.getJSONArray("ProductList");
for(int i = 0; i<productList.length();i++){
tempProduct = new Product();
JSONObject obj = productList.getJSONObject(i);
tempProduct.setProductCode(obj.getString("ProductCode"));
tempProduct.setProductName(obj.getString("ProductName"));
tempProduct.setProductGrammage(obj.getString("ProductGrammage"));
tempProduct.setProductBarcode(obj.getString("ProductBarcode"));
tempProduct.setProductDivision(obj.getString("ProductCatCode"));
tempProduct.setProductDepartment(obj.getString("ProductSubCode"));
tempProduct.setProductMRP(obj.getString("ProductMRP"));
tempProduct.setProductBBPrice(obj.getString("ProductBBPrice"));
matchFound = "N";
for (int j = 0; j < productResults.size();j++){
if (productResults.get(j).getProductCode().equals(tempProduct.getProductCode())){
matchFound = "Y";
}
}
if (matchFound == "N"){
productResults.add(tempProduct);
}
}
Log.d("Tatheer", "productResults size - "+productResults.size());
return ("OK");
}
catch (Exception e){
e.printStackTrace();
return ("Exception Caught");
}
}
@Override
protected void onPostExecute(String result){
super.onPostExecute(result);
if (result.equalsIgnoreCase("Exception Caught")){
Toast.makeText(getActivity(), "Unable to connect Server please try later", Toast.LENGTH_LONG).show();
pd.dismiss();
}
else {
Log.d("Tatheer", "existing on PostExecute");
filterProductArray(textSearch);
searchResults.setAdapter(new SearchResultsAdapter(getActivity(), filteredProductResults));
pd.dismiss();
}
}
}
}
Search.java
からmyAsyncTaskクラスLogcat:
03-22 09:50:56.624 5733-5764/? W/System.err: org.json.JSONException: No value for ProductList
03-22 09:50:56.624 5733-5764/? W/System.err: at org.json.JSONObject.get(JSONObject.java:389)
03-22 09:50:56.624 5733-5764/? W/System.err: at org.json.JSONObject.getJSONArray(JSONObject.java:584)
03-22 09:50:56.624 5733-5764/? W/System.err: at com.zing.basket.Search$myAsyncTask.getProductList(Search.java:167)
03-22 09:50:56.624 5733-5764/? W/System.err: at com.zing.basket.Search$myAsyncTask.doInBackground(Search.java:151)
03-22 09:50:56.624 5733-5764/? W/System.err: at com.zing.basket.Search$myAsyncTask.doInBackground(Search.java:125)
03-22 09:50:56.624 5733-5764/? W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
03-22 09:50:56.625 5733-5764/? W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
03-22 09:50:56.625 5733-5764/? W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
03-22 09:50:56.625 5733-5764/? W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
03-22 09:50:56.625 5733-5764/? W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
03-22 09:50:56.625 5733-5764/? W/System.err: at java.lang.Thread.run(Thread.java:818)
03-22 09:50:56.741 5733-5748/? E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab3d3650
JSON
{
"ProductList":[
{
"ProductCode":"1",
"ProductName":"DALDA Cooking oil 1 LTR",
"ProductGrammage":"5g",
"ProductBarcode":"1234567891011",
"ProductCatCode":"EDIBLE GROCERY",
"ProductSubCode":"OIL/GHEE",
"ProductMRP":"100",
"ProductBBPrice": "120"
}
]}
親切に助けて!
値が_urlで[0] STEXTを表している何= "http://demo5657559.mockable.io/getitems"+sText[0];_? –
この行の後 JSONObject json = jParser.getJSONFromUrl(url); あなたの応答をログに記録してください。 Log.w( "Json response"、json.toString()); 入手した情報を確認し、そこからデバッグします。 –
この行をチェックしてください 'String returnResult = getProductList(url);'。結果が有効であることを確認します。 –