-1

在我的应用程序中,像这样使用 HttpPost 解析 json

`

HttpClient httpClient = new DefaultHttpClient();
HttpParams httpParameters = httpClient.getParams();
HttpConnectionParams.setTcpNoDelay(httpParameters, true);
 HttpContext localContext = new BasicHttpContext();

  String url="http://ashishva.comxa.com/getdata_shoplistl_f.php?route="+sroute+"&shop_type="+sshoptype;
 HttpPost httpGet = new HttpPost(url);
  HttpResponse response = httpClient.execute(httpGet, localContext);
   BufferedReader reader = new BufferedReader(new  InputStreamReader(response.getEntity().getContent()`

我的清单文件已正确设置为可以访问 Internet

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.INTERNET" />

我在浏览器中获取 json,但有时仅在我的 android 手机和模拟器中获取结果。为什么会这样?为什么有时会得到而不是迟到。

虽然我没有得到任何数据,但我得到了异常

"java.net.UnknownHostException: Unable to resolve host "ashishva.comxa.com": No address associated with hostname"
4

2 回答 2

1

实际上我找到了解决方案。这条线

HttpPost httpGet = new HttpPost(url);

必须用 HttpGet 替换为

 HttpGet httpGet = new HttpGet(url);
于 2013-10-31T05:38:23.333 回答
1

我发现的最好的是在下面的 android 开发人员培训中是链接

http://developer.android.com/training/basics/network-ops/connecting.html

连接和下载数据

    // 给定一个 URL,建立一个 HttpUrlConnection 并检索
    // 作为 InputStream 的网页内容,它以字符串形式返回。

    私有字符串 downloadUrl(String myurl) 抛出 IOException {
        输入流是 = null;
        // 只显示检索到的前 500 个字符
        // 网页内容。
        国际长度 = 500;

        尝试 {
            URL url = 新 URL(myurl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(10000 /* 毫秒 */);
            conn.setConnectTimeout(15000 /* 毫秒 */);
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            // 开始查询
            连接.connect();
            int response = conn.getResponseCode();
            Log.d(DEBUG_TAG, "响应为:" + response);
            is = conn.getInputStream();

            // 将 InputStream 转换为字符串
            String contentAsString = readIt(is, len);
            返回内容作为字符串;

        // 确保在应用程序运行后关闭 InputStream
        // 使用完毕。
        } 最后 {
            如果(是!= null){
                is.close();
            }
        }
    }

将 InputStream 转换为字符串

    // 读取 InputStream 并将其转换为 String。
    public String readIt(InputStream stream, int len) 抛出 IOException, UnsupportedEncodingException {
        读者读者=空;
        reader = new InputStreamReader(stream, "UTF-8");        
        char[] 缓冲区 = 新 char[len];
        reader.read(缓冲区);
        返回新字符串(缓冲区);

}
于 2014-03-14T01:00:52.157 回答