首页 > Android连接本地服务器被拒。

Android连接本地服务器被拒。

Error converting result org.apache.http.conn.HttpHostConnectException:Connection to http://127.0.0.1 refused

以下是获取数据的代码:

public List<SortModel> getWholePOI(String SQLUri){
        List<SortModel> info=new ArrayList<SortModel>();
        SortModel temp;
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpRequest = new HttpPost(SQLUri); //SQLUri是你与服务器交互的地址
        httpRequest.setHeader("Accept", "application/json");
        String tagName="";
        String mname="";
        int difficulty=0;
        int i=0;

        try
        {
            //得到响应
            HttpResponse response = httpClient.execute(httpRequest);
            Log.e("position","~~~~~~~~~~~~here~~~~~~~~~~~~");

            //返回值如果为200的话则证明成功的得到了数据
            if(response.getStatusLine().getStatusCode() == 200)
            {
                StringBuilder builder = new StringBuilder();

                //将得到的数据进行解析
                BufferedReader buffer =
                        new BufferedReader(new InputStreamReader(response.getEntity().getContent(),"UTF-8"));

                Log.e("success","~~~~~~~~~~~~here~~~~~~~~~~~~");
                for(String s =buffer.readLine(); s!= null; s = buffer.readLine())
                {
                    builder.append(s);
                }

                String json=builder.toString();

                JsonReader jr=new JsonReader(new StringReader(json));//tname为json字符串
                try {
                    jr.beginArray();// 开始解析数组
                    while(jr.hasNext()){
                        jr.beginObject();//开始解析对象
                        temp=new SortModel();
                        while (jr.hasNext()) {
                            tagName=jr.nextName();
                            //多余一个name的时候要设置一个tagName存储这个name,不能直接在每个if后使用jr.nextName()
                            //不然会引起exception
                            if (tagName.equals("mname")) {
                                //解析键值
                                //Log.e("p_id",jr.nextString());
                                mname=jr.nextString();
                                //存入数据
                                temp.setName(mname);
                            }else if (tagName.equals("difficulty")) {
                                //解析键值
                                //Log.e("votes",jr.nextString());
                                difficulty=Integer.parseInt(jr.nextString());
                                temp.setDifficulty(difficulty);
                            }
                        }
                        jr.endObject();// 解析对象结束


                        //汉字转换成拼音
                        String pinyin = characterParser.getSelling(mname);
                        String sortString = pinyin.substring(0, 1).toUpperCase();
                        // 正则表达式,判断首字母是否是英文字母
                        if(sortString.matches("[A-Z]")){
                        /*有bug,当首字母没有匹配上list item的话,虽然输入首字母能查找出相应的item,但是首字母之后的输入则不能搜索到目标*/
                            temp.setSortLetters(sortString.toUpperCase());
                        }else{
                            temp.setSortLetters("#");
                        }
                        info.add(temp);
                        i++;
                    }
                    jr.endArray();// 解析数组结束
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return info;

            }
        } catch (Exception e)
        {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }
        return info;
    }
    

1)127.0.0.1能ping通的,浏览器也能连接本地服务器。
2)试过换成192.几几几的IP,没有了上面的错误提示了,但仍旧获取不了数据,而且ping这种IP时一直超时。
3)防火墙已经关掉了。
4)permission也加过了。

求大神指点迷津!!跪谢。


如果你用的是127.0.0.1的IP,我认为你是绝无可能获取数据的,127.0.0.1是指本机地址,PC指向PC自己,Android客户端指向客户端自己,客户端用127.0.0.1是不可能访问到PC上的。至于其他IP怎么用,首先你得确认你的服务端运行所在PC的IP是什么,而不是靠猜是哪个IP地址。

【热门文章】
【热门文章】