我正在尝试将json数组的信息解析为android。 我使用下面的代码,我从Web服务获取信息,如果我打开php文件,一切都好,但在android我得到无法连接到数据库。我确实设置了访问互联网的权限......
以下是我使用的代码:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
StrictMode.enableDefaults(); //STRICT MODE ENABLED
resultView = (TextView) findViewById(R.id.result);
getData();
}
public void getData(){
String result = "";
InputStream isr = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.10.28/albana/getAllCustomers.php"); //YOUR PHP SCRIPT ADDRESS
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
isr = entity.getContent();
}
catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
resultView.setText("Couldnt connect to database");
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(isr,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result=sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//parse json data
try {
String s = "";
JSONArray jArray = new JSONArray(result);
for(int i=0; i<jArray.length();i++){
JSONObject json = jArray.getJSONObject(i);
s = s +
"Name : "+json.getString("FirstName")+" "+json.getString("LastName")+"\n"+
"Age : "+json.getInt("Age")+"\n"+
"Mobile Using : "+json.getString("Mobile")+"\n\n";
}
resultView.setText(s);
} catch (Exception e) {
// TODO: handle exception
Log.e("log_tag", "Error Parsing Data "+e.toString());
}
}
我收到消息“无法连接到数据库”; Log Cat没有错误...... 请有人建议我..
答案 0 :(得分:0)
您正在尝试连接到192.168.10.28,这是一个专用或不可路由的网络地址。如果您在该网络(或专门连接到该网络的网络)上,则只能连接到该网络。你通过wifi连接到网络吗?如果是这样,我希望它能够工作,所以尝试在Web浏览器中打开URL,看看是否得到了json响应。如果您通过移动网络连接到它,我不希望它能够正常工作。
答案 1 :(得分:0)
我很确定你不想在这里使用HttpPost
。请尝试HttpGet
,语法保持不变。
还检查戴夫的答案。
答案 2 :(得分:0)
在httpd.conf文件中进行以下更改
变化:
拒绝所有人 允许来自127.0.0.1 允许来自:: 1 允许来自localhost
为:
全部允许
并重新启动所有服务,就像魅力一样。