如何解码从Android中的服务器的字符串和获取数据?

时间:2015-01-30 12:06:45

标签: android json

我想从服务器获取数据,但String是一个Encode,所以我无法获取Encode String。那么如何转换解码并获取它?。

我能够在没有编码的情况下成功从服务器获取数据意味着普通字符串。

实施例,

DESC =" PHA + PHN0cm9uZz48YSBocmVmPSJodHRwOi8vd3d3Lm1hcnlzY2VudGVyLm9yZy9jb250ZW50L2hlYWx0aC1jYXJlLXNlcnZpY2VzIj48c3Ryb25nPk1lZGljYWwgU2VydmljZXM8L3N0cm9uZz48L2E + OiB0byBtYWtlIGFu&#34 ;;

我的代码是,

public class JSONFunctions {

    public static JSONObject getJSONfromURL(String url) {
        InputStream is = null;
        String result = "";
        JSONObject jArray = null;

        // Download JSON data from URL
        try {
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost(url);
            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 to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            // BufferedReader reader = new BufferedReader(new
            // InputStreamReader(is, HTTP.UTF_8), 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 {

            jArray = new JSONObject(result);
        } catch (JSONException e) {
            Log.e("log_tag", "Error parsing data " + e.toString());
        }

        return jArray;
    }

2 个答案:

答案 0 :(得分:0)

{回复:“成功”,数据:[{s_id:“5”,ser_id:“11”,ser_title:“服务”,标题:“服务”,desc:“PHN0cm9uZz48YSB”}}}

JSONObject obj = new JSONObject(response);
status = obj.getString("response");
if(status.equals("success")
{

JSONArray Data = obj.getJSONArray("data");
for(int i=0;i<Data.length();i++)
{
  String s_id=Data.getJsonObject(i).getString("s_id");
  String ser_id=Data.getJsonObject(i).getString("ser_id");
  String ser_title=Data.getJsonObject(i).getString("ser_title");
  String title=Data.getJsonObject(i).getString("title");
  String desc=Data.getJsonObject(i).getString("desc");
}

}

答案 1 :(得分:0)

你的JSON是否已经从这样的服务器到达了?

{ 
   response: "success", 
   data: [ 
       { 
          s_id: "5", 
          ser_id: "11", 
          ser_title: "Services", 
          title: "Services", 
          desc: "PHN0cm9uZz48YSB" 
       } 
   ] 
} 

如果不是,您是否可以向我们提供有关服务器如何投放JSON的一些代码?


如果是,那么@Akash答案将有效,但我建议您将JSON解析为JAVA对象,以便更好地阅读和维护,使用外部像Google Gson

这样的图书馆

会是这样的:

Gson gson = new Gson ();
YourJavaObject object = gson.fromJson(jsonString,  YourJavaObject.class) 

YourJavaObject.class

public class YourJavaObject {
   public Integer s_id;
   public Integer ser_id;
   public String ser_title;
   public String desc;
   public String title; 
}