android 无法解析 json 数据 android
android unable to parse json data android
我无法解析 JSON 数据,每当我解析时它总是给我 [] 我已经检查了 jsonlint.com 是否有效 json,它 returns正确的数据
url 是 http://egravity.in/csvupload/hello.php/
在我使用的参数中
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(包含返回数据的字符串)时,它显示 [] 而不是数据
请帮助我...!!!
你应该发出一个获取请求而不是post试试这个代码
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();
您使用 HttpPost,但在 url 中,例如“http://egravity.in/csvupload/hello.php?id=14”- HttpGet with param id=14
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));
我无法解析 JSON 数据,每当我解析时它总是给我 [] 我已经检查了 jsonlint.com 是否有效 json,它 returns正确的数据
url 是 http://egravity.in/csvupload/hello.php/ 在我使用的参数中 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(包含返回数据的字符串)时,它显示 [] 而不是数据 请帮助我...!!!
你应该发出一个获取请求而不是post试试这个代码
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();
您使用 HttpPost,但在 url 中,例如“http://egravity.in/csvupload/hello.php?id=14”- HttpGet with param id=14
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));