0

我正在使用一个 API,它要求我进行“URL HTMLCLient 调用”,它返回 JSON 格式的数据。我已经在我的浏览器上测试了这些链接,它们工作正常,但是当我尝试在 Android 中检索数据时,我不断得到一个空值。

这是我下面的代码

public String callWebservice(String weblink) {

String result = "";

    try {

        //String link = "http://free.worldweatheronline.com/feed/weather.ashx?q=cardiff&num_of_days=4&format=json&key=eb9390089uhq175307132201";
        URL url = new URL(weblink);

        URLConnection urlc = url.openConnection();
        BufferedReader bfr = new BufferedReader(new InputStreamReader(
                urlc.getInputStream()));
        result = bfr.readLine();

    } catch (Exception e) {
        e.printStackTrace();
        result = "timeout";
    }
    return result;
}

该网络链接包含我正在尝试检索信息的 url,我已经使用 worldweatheronline JSON API 测试了代码并且它工作正常。我的问题是,API 文档所说的进行 URL HTMLClient 调用的事实是否要求我以与常规 HTTP 请求不同的方式执行此操作,如果不是,那么当我返回空值时可能是什么原因相同的链接在我的浏览器上运行良好。

4

2 回答 2

0

在您的代码中,您不会在 URL 调用之后附加缓冲输出。

这是您更新的代码:

public String callWebservice() {
        String result = "", line = "";

        try {

            String weblink = "http://itwillbealright.co.uk/dev1/camc/clientmethod.php?method=Login&id=&version=&username=m&password=m";
            URL url = new URL(weblink);

            URLConnection urlc = url.openConnection();
            BufferedReader bfr = new BufferedReader(new InputStreamReader(
                    urlc.getInputStream()));

            while ((line = bfr.readLine()) != null) {
                result += line;
            }

        } catch (Exception e) {
            e.printStackTrace();
            result = "timeout";
        }
        return result;
    }
于 2013-04-22T11:58:46.597 回答
0

尝试一下

// 在你的代码中的某个地方,这被称为 // 在不是用户界面的线程中 // 线程

try {
  URL url = new URL("http://www.vogella.com");
  HttpURLConnection con = (HttpURLConnection) url
    .openConnection();
  readStream(con.getInputStream());
  } catch (Exception e) {
  e.printStackTrace();
}



private void readStream(InputStream in) {
  BufferedReader reader = null;
  try {
    reader = new BufferedReader(new InputStreamReader(in));
    String line = "";
    while ((line = reader.readLine()) != null) {
      System.out.println(line);
    }
  } catch (IOException e) {
    e.printStackTrace();
  } finally {
    if (reader != null) {
      try {
        reader.close();
      } catch (IOException e) {
        e.printStackTrace();
        }
    }
  }
} 
于 2013-04-22T11:59:34.657 回答