【问题标题】:Problems with JSON from WCF Service in androidandroid中WCF服务的JSON问题
【发布时间】:2013-03-01 10:13:04
【问题描述】:

我有一个 wcf 服务,我将发布一些方法,例如:

[OperationContract]
    [WebGet(
        UriTemplate = "GetPlates",
        BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json,
        RequestFormat = WebMessageFormat.Json)]
    IList<string> GetPlates();

班级

   public IList<string> GetPlates()
    {
        return new List<string>
                   {
                       "ag",
                       "asda"
                   };
    }

在活动中

try {


             // Send GET request to <service>/GetPlates
            HttpGet request = new HttpGet(SERVICE_URI + "/GetPlates");
            request.setHeader("Accept", "application/json");
            request.setHeader("Content-type", "application/json");

            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpResponse response = httpClient.execute(request);

            HttpEntity responseEntity = response.getEntity();

            // Read response data into buffer
            char[] buffer = new char[(int)responseEntity.getContentLength()];
            InputStream stream = responseEntity.getContent();
            InputStreamReader reader = new InputStreamReader(stream);
            reader.read(buffer);
            stream.close();

            JSONArray plates = new JSONArray(new String(buffer));


        } catch (Exception e) {

            e.printStackTrace();
        }

我每次都得到空值。 如果我从浏览器或模拟器访问 URL,我会得到: ["ag","asda"].

【问题讨论】:

  • 如果它在模拟器上工作但在手机上不工作,那么首先检查你的手机是否可以访问服务器的 ip
  • 如果您没有收到异常,则可以检查您的 DNS。尝试通过 wifi 连接到您的本地网络,看看是否可以解决问题。

标签: android json rest service


【解决方案1】:

你好试试下面的代码

你可以参考教程here

    class RetreiveFeedTask extends AsyncTask<String, Void, RSSFeed> {

    private Exception exception;

    protected RSSFeed doInBackground(String... urls) {
    try {


         // Send GET request to <service>/GetPlates
        HttpGet request = new HttpGet(SERVICE_URI + "/GetPlates");
        request.setHeader("Accept", "application/json");
        request.setHeader("Content-type", "application/json");

        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpResponse response = httpClient.execute(request);

        HttpEntity responseEntity = response.getEntity();

        // Read response data into buffer
        char[] buffer = new char[(int)responseEntity.getContentLength()];
        InputStream stream = responseEntity.getContent();
        InputStreamReader reader = new InputStreamReader(stream);
        reader.read(buffer);
        stream.close();

        JSONArray plates = new JSONArray(new String(buffer));


    } catch (Exception e) {

        e.printStackTrace();
    }

   protected void onPostExecute(RSSFeed feed) {
     // TODO: check this.exception 
    // TODO: do something with the feed
    }
  }

  new RetreiveFeedTask().execute(urlToRssFeed);

【讨论】:

  • 您是否在 AndroidMainfest 文件中授予 Internet 权限检查一次,如果没有请提供 Internet 权限` `
  • 现在检查上面的代码,我已经修改了你的代码,让我们试试这个代码....或者参考同样问题的帖子......
  • 实际上,当应用程序尝试在其主线程上执行网络操作时,会引发此异常。在 AsyncTask 中运行您的代码:请验证此链接 http://developer.android.com/reference/android/os/AsyncTask.html
  • 我已经这样做了,但仍然没有结果。我没有得到结果,我不明白发生了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多