URLEncoder限制服务器的响应

时间:2014-08-26 23:08:52

标签: java android networking network-programming

我有以下问题..

当我硬编码一个类似

的网址查询时

示例:

https://en.wikipedia.org/w/api.php?action=query&list=geosearch&gslimit=5&gsradius=10000&gscoord=51.4451254|5.4731413&format=json

(查看浏览器中的链接)

我向服务器发出请求,我在字符串中得到整个响应..

然而,当我动态制作时,我必须通过" |"字符,在URLEncoder.encode(" |"," UTF-8")这种格式......

在这种情况下,响应只是我想要的一个元素..

这是我缺少的东西吗?

提前致谢

protected String doInBackground(String... query) {


        String response = "";
        DefaultHttpClient client = new DefaultHttpClient();

        HttpGet httpGet = null;

        // try {
        HttpResponse execute = null;
        try {
            //String searchTerm  = URLEncoder.encode(query[0], "UTF-8");
            httpGet = new HttpGet(query[0]);
            execute = client.execute(httpGet);
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        InputStream content = null;
        try {
            content = execute.getEntity().getContent();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        BufferedReader buffer = new BufferedReader(new InputStreamReader(
                content));
        String s = "";
        try {
            while ((s = buffer.readLine()) != null) {
                response += s;
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return response;

    }

以上部分是我的代码..输入查询[0]是我请求的网址,它类似于我在开头发布的链接。

如果我硬编码网址(直接设置链接),我有响应。我的回复是json格式的字符串。 (现在我让它串起来)

如果我动态地进行查询,例如:

gsQuery =  mainPage  + "&gsradius=" + radius + "&gscoord=" + latitude + URLEncoder.encode("|", "UTF-8") + longtitude +"&format=json";   

(仅编码" |"字符)它只返回我的响应的第一个元素。

0 个答案:

没有答案