搜索时解析数据错误没有搜索结果

时间:2012-02-24 14:21:01

标签: java android json

我已经制作了一个代码的一部分,可以在远程服务器上进行查询。但是当我在没有查询结果的情况下解析数据时,我遇到了问题,是否有人知道如何处理这个问题?

将数据解析为JSONArray的构造函数的代码是:

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JsonParser {
    static InputStream is = null;
    static JSONObject json_data = null;
    static String result = "";

    // constructor
    public JsonParser() {
    }

    public  JSONArray getJSONFromUrl(ArrayList<NameValuePair> nameValuePairs, String url) {

        //http post this will keep the same way as it was (it's important to do not forget to add Internet access to androidmanifest.xml
        InputStream is = null;
        String result ="";
        JSONArray jArray = null;
        try{
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity entity = response.getEntity();
            is = entity.getContent();

        }
        catch(Exception e){
            Log.e("log_tag", "Error in http connection "+e.toString());
        }

        //convert response that we receive from the php file into a String()
        try{


            BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            result = sb.toString();
        }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
        }

        // try parse the string to a Json object
        try {
            //json_data = new JSONObject(result);
            jArray = new JSONArray(result);


        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return Json String
        return jArray;

    }    
}

on url,namevaluepair如果有人想尝试我用过:

String url = "http://trialsols.webege.com/mobil.php";
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("precio",data));

这是一个带有PHP数据库的MySQL示例,其中数据是英语成本字段“precio”的int“

解决方案:在解析jArray的数据之前,从这个构造函数返回我添加了一个if(jArray!= null)所以我可以在没有结果而不是解析数据的情况下创建一条消息

0 个答案:

没有答案