【问题标题】:How to Decode The String and Fetch data from Server in android?如何在android中解码字符串并从服务器获取数据?
【发布时间】:2015-01-31 01:51:22
【问题描述】:

我想从服务器获取数据,但字符串是编码,所以我无法获取编码字符串。那么如何在解码中转换并获取呢?

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

例子,

desc="PHA+PHN0cm9uZz48YSBocmVmPSJodHRwOi8vd3d3Lm1hcnlzY2VudGVyLm9yZy9jb250ZW50L2hlYWx0aC1jYXJlLXNlcnZpY2VzIj48c3Ryb25nPk1lZGljYWwgU2VydmljZXM8L3N0cm9uZz48L2E+OiB0byBtYWtlIGFu";

我的代码是,

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;
    }

【问题讨论】:

  • 你的 json 响应是什么:
  • { 响应:“成功”,数据:[ { s_id:“5”,ser_id:“11”,ser_title:“服务”,标题:“服务”,desc:“PHN0cm9uZz48YSB”}] }

标签: android json


【解决方案1】:

您的JSON 是否已经像这样从服务器到达?

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

如果不是,您能否向我们提供一些关于您的服务器如何为 JSON 提供服务的代码?


如果是,那么@Akash 答案将起作用,但我建议您使用 @987654321 等外部库将您的 JSON 解析为 JAVA 对象,以获得更好的可读性和维护性@

应该是这样的:

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; 
} 

【讨论】:

    【解决方案2】:

    { 响应:“成功”,数据:[ { s_id:“5”,ser_id:“11”,ser_title:“服务”,标题:“服务”,描述:“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");
    }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多