我无法解析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(包含返回数据的字符串)时,它会显示[]而不是数据 请帮帮我...... !!!
答案 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));