真心伤不起,原来Android中不能解析以127.0.0.1和localhost开头的XML文件

我部署在本地的WEBSERVICE地址如图所示:



----------------------------------------------------------------------------------------------------

MainActivity的代码如下所示:

package cn.yljd.db;


import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;


import org.apache.http.client.ClientProtocolException;


import cn.yljd.service.MyXMLParser;
import android.app.Activity;
import android.os.Bundle;
import android.view.*;
import android.widget.*;


public class MainActivity extends Activity {
private EditText userText;
private EditText pwdText;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        userText=(EditText) this.findViewById(R.id.edit1);
        pwdText=(EditText) this.findViewById(R.id.edit2);  
Button button=(Button)findViewById(R.id.button);
        
        button.setOnClickListener(new buttonOnClickListener());
    }   
// private final class buttonOnClickListener implements View.OnClickListener{
//   public void onClick(View v) {
//   String username = userText.getText().toString();
//   String password = pwdText.getText().toString();
//   MyXMLParser parser=new MyXMLParser();
//   List<String[]> list = parser.xml2list("http://www.me.com:2946/Service1.asmx/select", "diffgr:diffgram/NewDataSet/Table", "User_Id,User_Name,User_Password");
//   for (String[] str:list)
//   {
//  
//   System.out.println("str[1]="+str[0]);
//   System.out.println("str[2]="+str[1]);
//   //System.out.println("1");
//   //if((username.equals("1") && password.equals("2"))){
//   //Toast.makeText(getApplicationContext(),"登陆成功or失败",1).show();
//   //}
//   //else 
//   if (username.equals(str[1]) && password.equals(str[2])){
//   Toast.makeText(getApplicationContext(),"登陆成功",Toast.LENGTH_SHORT).show();
//   break;
//   }
//   //else{
//   //Toast.makeText(getApplicationContext(),"登陆失败",0).show();
//   //}
//   }
//   Toast.makeText(getApplicationContext(),"登陆失败",Toast.LENGTH_SHORT).show();
//   }
//  }  
 
private final class buttonOnClickListener implements View.OnClickListener{
  public void onClick(View v) {
  String username = userText.getText().toString();
  String password = pwdText.getText().toString();
  MyXMLParser parser=new MyXMLParser();
  List<String[]> list =(parser.xml2list("http://192.168.66.175/Service1.asmx/select", "diffgr:diffgram/NewDataSet/Table", "User_Id,User_Name,User_Password"));
  for(String[] str:list){
  //System.out.println(str[0]);
  if((username.equals(str[1])&&password.equals(str[2]))){
    System.out.println("successful");
    Toast.makeText(getApplicationContext(),"登陆成功",1).show();
    break;
    }else {
    Toast.makeText(getApplicationContext(),"登陆失败",0).show();
    System.out.println("fail");
    break;
    }
 
  }
 
 
 



}
    
}

---------------------------------------------------------

MyXMLParser类代码如下所示:

package cn.yljd.service;
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.w3c.dom.*;
import org.xml.sax.*;
public class MyXMLParser {

public static List<String[]> xml2list(String url, String xpath, String fields)
{
List<String[]> mList = new ArrayList<String[]>();
String[] path = xpath.split("/");
String[] field = fields.split(",");
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
factory = DocumentBuilderFactory.newInstance();
try {
String content = getXML(url);
builder = factory.newDocumentBuilder();
document = builder.parse(new ByteArrayInputStream(content.getBytes("UTF8")));
Element root  = document.getDocumentElement();
Element tmp = (Element) root.getElementsByTagName(path[0]).item(0);
for (int i=1;i<path.length-1;i++)
{
tmp = (Element)tmp.getElementsByTagName(path[i]).item(0);
}

NodeList nodes = tmp.getElementsByTagName(path[path.length-1]);

for (int i=0;i<nodes.getLength();i++)
{
Element item = (Element) nodes.item(i);
String[] tmpString = new String[fields.length()];
for (int j = 0;j<field.length;j++)
{
Element tmpElement = (Element) item.getElementsByTagName(field[j]).item(0);
tmpString[j] = tmpElement.getFirstChild().getNodeValue();
}
mList.add(tmpString);
}

} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return mList;
}

public static String getXML(String url) throws ClientProtocolException, IOException
{
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
HttpResponse response = client.execute(post);
HttpEntity entity = response.getEntity();
BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent()));
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = reader.readLine())!=null)
{
sb.append(line);
}
return sb.toString();
}
}




觉得写得不错,帮忙打赏下,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 127...1和localhost都是指本地主机,但是127...1是IP地址,而localhost是域名。在计算机网络,IP地址是用于标识网络的设备的唯一地址,而域名是用于方便人们记忆和使用的名称。因此,127...1和localhost在功能上是相同的,但是在使用上有一些区别。例如,在浏览器输入localhost可以直接访问本地主机,而输入127...1需要输入完整的IP地址。 ### 回答2: 127.0.0.1localhost都是网络通信常用的本地回环地址,它们都是用来指代本机的地址,也可以被用来测试网络应用程序。但是,它们之间仍然有一些不同之处。 首先,127.0.0.1是一个IP地址的形式,它是一个保留地址,通常用于本地主机的循环测试,也可以用于指向本机上的任何服务。而localhost是一个主机的名称,它相当于一个DNS名称,通常被设置为指向主机的本地回环网卡。 其次,当使用127.0.0.1时,数据包直接在本地循环,不会离开计算机。而当使用localhost时,数据包将在计算机上进行一些额外的转发和解析,这可能会导致一些微小的性能损失。 此外,127.0.0.1可以被用作IPv4地址,而localhost可以被用作IPv4和IPv6地址。因此,在某些情况下,当使用IPv6协议时,localhost可能更推荐。 最后,127.0.0.1是不需要解析的,因为它是一个预设IP地址;而localhost需要通过DNS解析,这意味着它可能因为DNS设置不正确而失败。 综上所述,虽然127.0.0.1localhost都是用来指代本机的地址,但它们之间有一些微小的不同之处,开发者在使用时可以根据实际应用场景来选择使用。 ### 回答3: 127.0.0.1localhost都是本地环回地址,用于指向本地电脑上的网络服务。虽然它们看起来非常相似,但它们之间存在一些微小的差别。 首先,127.0.0.1是一种IP地址,它表示本机上的回送接口,也就是说,当计算机上运行的程序尝试连接127.0.0.1时,它实际上是在寻找与自己相连的网络接口。这个地址只能访问本机,所以除了本机,其他计算机无法使用它来连接该计算机上的服务。 而localhost是一个主机名,它也指向计算机上的本地回环接口。与127.0.0.1不同,这个名字可以转换为IP地址,也就是通常说的“DNS解析”。在绝大多数系统上,localhost会被解析127.0.0.1。 因此,如果您需要在计算机上运行一个本地测试服务器,并且只想通过本地访问该服务器,那么您可以使用任何一个地址。但是,如果您希望您的程序或服务应用程序只能通过localhost来访问,那么您应该使用localhost,因为这样更安全,且防止其他访问您的计算机上的服务。 总之,127.0.0.1localhost都是用来指向本地电脑上的网络服务的地址。虽然它们有微小的差别,但可以根据具体的需要和用途选择使用哪一个。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值