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也加过了。
求大神指点迷津!!跪谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果你用的是127.0.0.1的IP,我认为你是绝无可能获取数据的,127.0.0.1是指本机地址,PC指向PC自己,Android客户端指向客户端自己,客户端用127.0.0.1是不可能访问到PC上的。至于其他IP怎么用,首先你得确认你的服务端运行所在PC的IP是什么,而不是靠猜是哪个IP地址。