【问题标题】:How to call a json webservice through android如何通过android调用json webservice
【发布时间】:2011-10-27 22:35:45
【问题描述】:

我需要使用 JSON 访问 Rest 格式的 .Net Web 服务。我是 对这个概念很陌生,并且对这个概念非常困惑 作品.... 任何可以对此进行概述的人。我需要我的步骤 需要遵循才能使用 JSON。现在我的疑问是如何使用 JSON 抓取输出。

【问题讨论】:

标签: java android web-services json


【解决方案1】:

你使用json数据如下:

var a=new JSONObject(jsonData);

http://developer.android.com/resources/tutorials/views/hello-mapview.html

使用来自 a 的数据来构造必要的对象并用同样的方法做必要的事情

【讨论】:

    【解决方案2】:

    这是解析Json网络服务的最简单方法

        String str="url";
        try{
            URL url=new URL(str);
            URLConnection urlc=url.openConnection();
            BufferedReader bfr=new BufferedReader(new InputStreamReader(urlc.getInputStream()));
            String line;
            while((line=bfr.readLine())!=null)
            {
            JSONArray jsa=new JSONArray(line);
            for(int i=0;i<jsa.length();i++)
               {
               JSONObject jo=(JSONObject)jsa.get(i);
                            title=jo.getString("deal_title");  //tag name "deal_title",will return value that we save in title string
                        des=jo.getString("deal_description");
           }
        }
        catch(Exeption e){
        }
    

    在 android manifest 中提及 Internet 权限

    【讨论】:

    • 解决不了任何问题,遇到空字节时停止转换是主要错误之一。
    • 我认为这不是你的问题。但如果你知道它有一些错误..随时编辑。否则作为答案。如果喜欢那么我将第一个 +1 你的答案。它为我工作,所以我在这里发帖
    • 然后离开它..我没有看到任何问题。它在我的应用程序中工作。
    • 嗯,这是主要的事情。在空字节之后丢弃数据显然对您来说不是问题。可能是给别人的。
    • 你能解释一下这对其他人来说会是怎样的问题。到目前为止还不清楚我在哪里抛出空字节。你能解释一下吗
    【解决方案3】:

    以下是 Android 活动从 Web 服务读取并解析 JSON 对象的代码:

    public void clickbutton(View v) {
        try {
            // http://androidarabia.net/quran4android/phpserver/connecttoserver.php
    
            // Log.i(getClass().getSimpleName(), "send  task - start");
            HttpParams httpParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParams,
                    TIMEOUT_MILLISEC);
            HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);
            //
            HttpParams p = new BasicHttpParams();
            // p.setParameter("name", pvo.getName());
            p.setParameter("user", "1");
    
            // Instantiate an HttpClient
            HttpClient httpclient = new DefaultHttpClient(p);
            String url = "http://10.0.2.2:8080/sample1/" + 
                         "webservice1.php?user=1&format=json";
            HttpPost httppost = new HttpPost(url);
    
            // Instantiate a GET HTTP method
            try {
                Log.i(getClass().getSimpleName(), "send  task - start");
                //
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
                        2);
                nameValuePairs.add(new BasicNameValuePair("user", "1"));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                ResponseHandler<String> responseHandler = new BasicResponseHandler();
                String responseBody = httpclient.execute(httppost,
                        responseHandler);
                // Parse
                JSONObject json = new JSONObject(responseBody);
                JSONArray jArray = json.getJSONArray("posts");
                ArrayList<HashMap<String, String>> mylist = 
                       new ArrayList<HashMap<String, String>>();
    
                for (int i = 0; i < jArray.length(); i++) {
                    HashMap<String, String> map = new HashMap<String, String>();
                    JSONObject e = jArray.getJSONObject(i);
                    String s = e.getString("post");
                    JSONObject jObject = new JSONObject(s);
    
                    map.put("idusers", jObject.getString("idusers"));
                    map.put("UserName", jObject.getString("UserName"));
                    map.put("FullName", jObject.getString("FullName"));
    
                    mylist.add(map);
                }
                Toast.makeText(this, responseBody, Toast.LENGTH_LONG).show();
    
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // Log.i(getClass().getSimpleName(), "send  task - end");
    
        } catch (Throwable t) {
            Toast.makeText(this, "Request failed: " + t.toString(),
                    Toast.LENGTH_LONG).show();
        }
    }
    

    更多详情见http://www.codeproject.com/Articles/267023/Send-and-receive-json-between-android-and-php

    【讨论】:

      【解决方案4】:

      Gson 库可以自动将您的 json 字符串解析为对象。 简单例子:

       Gson gson = new Gson();
       int[] ints = {1, 2, 3, 4, 5};
       String[] strings = {"abc", "def", "ghi"};
      
       //(Serialization)
       gson.toJson(ints);     ==> prints [1,2,3,4,5]
       gson.toJson(strings);  ==> prints ["abc", "def", "ghi"]
      
       //(Deserialization)
       int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class); 
       ==> ints2 will be same as ints
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-03
        • 2013-12-30
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        相关资源
        最近更新 更多