android无法解析json数据android

时间:2015-08-10 12:12:36

标签: android json httprequest

我无法解析JSON数据,它总是给我[]每当我解析我已经在jsonlint.com上检查了有效的json,它返回正确的数据

网址为http://egravity.in/csvupload/hello.php/ 在我正在使用的params param.add(new BasicNameValuePair(“id”,“14”));  因此我希望url为= http://egravity.in/csvupload/hello.php/?id=14

package com.example.prototype.utility;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.DefaultClientConnection;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.StrictMode;
import android.util.Log;
import android.widget.Toast;

@SuppressWarnings({ "deprecation", "unused" })
public class JSONUtil {

    JSONObject result;
    String temp;
    String t;
    InputStream is;
    String exception="";
    static String json = "";
    static JSONObject jObj = null;

  public String setConnection(String url,String method,List <NameValuePair>params){
        if (android.os.Build.VERSION.SDK_INT > 9) {
            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);
        }

        DefaultHttpClient client=new DefaultHttpClient();
        if(method.equalsIgnoreCase("post")){



            HttpResponse httpResponse = null;

            try {

                HttpPost httpPost = new HttpPost(url);
               httpPost.setEntity(new UrlEncodedFormEntity(params));

                t= httpPost.getURI().toString();
    Log.e("ur", t);
                httpResponse = client.execute(httpPost);
                Log.e("response",httpResponse.toString());
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
                Log.e("content_bestfrag ","input stream have "+is.available()  );

        if(is==null)
                Log.e("content ","input stream is null");

        else
            Log.e("content_bestfrag ","input stream is not null "+is.available()  );



            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                exception+=e.getMessage()+"  ";
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                exception+=e.getMessage()+"  ";

            }

        }


        try{
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is));


            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();

            }catch(Exception e){
                Log.e("Buffer Error", "Error converting result " + e.getMessage());
            }

            Log.e("json", json);
            return json;
    }





}

每当我打印json(包含返回数据的字符串)时,它会显示[]而不是数据 请帮帮我...... !!!

3 个答案:

答案 0 :(得分:1)

您应该发出获取请求,而不是发布尝试此代码

    HttpClient client = new DefaultHttpClient();


    URI website = new URI("http://egravity.in/csvupload/hello.php/?id=14"); 
    HttpGet request = new HttpGet();
    request.setURI(website);
    HttpResponse response = client.execute(request);
    response.getStatusLine().getStatusCode();

    in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    StringBuffer sb = new StringBuffer("");
    String l = "";
    String nl = System.getProperty("line.separator");
    while ((l = in.readLine()) != null) {
        sb.append(l + nl);
    }
    in.close();
    data = sb.toString();

答案 1 :(得分:0)

您使用HttpPost,但在网址中&#34; http://egravity.in/csvupload/hello.php?id=14&#34; - 使用param id = 14

的HttpGet

答案 2 :(得分:0)

EntityUtils.toString()很容易获得HttpResponse字符串。

HttpPost post = new HttpPost(url);
HttpClient client = new DefaultHttpClient();

post.setEntity(new UrlEncodedFormEntity(params1, charset));
HttpResponse resp = client.execute(post);
String strResp = EntityUtils.toString(resp.getEntity());

JSONObject jsonResp = new JSONObject(strResp);
System.out.println(jsonResp.toString(4));