android 连接web服务连不上?请诸位大神看下,谢谢06-18 03:07:31.209: V/Sys(751): 111111
06-18 03:07:31.339: D/AndroidRuntime(751): Shutting down VM
06-18 03:07:31.339: W/d
alvikvm(751): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
06-18 03:07:31.479: E/AndroidRuntime(751): FATAL EXCEPTION: main
06-18 03:07:31.479: E/AndroidRuntime(751): android.os.NetworkOnMainThreadException
06-18 03:07:31.479: E/AndroidRuntime(751):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
06-18 03:07:31.479: E/AndroidRuntime(751):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
06-18 03:07:31.479: E/AndroidRuntime(751):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
06-18 03:07:31.479: E/AndroidRuntime(751):  at libcore.io.IoBridge.connect(IoBridge.java:112)
06-18 03:07:31.479: E/AndroidRuntime(751):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
06-18 03:07:31.479: E/AndroidRuntime(751):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
06-18 03:07:31.479: E/AndroidRuntime(751):  at java.net.Socket.connect(Socket.java:842)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
06-18 03:07:31.479: E/AndroidRuntime(751):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
06-18 03:07:31.479: E/AndroidRuntime(751):  at com.tata.fdjl.LoginViewget.Loginsys(LoginViewget.java:107)
06-18 03:07:31.479: E/AndroidRuntime(751):  at com.tata.fdjl.LoginViewget.onClick(LoginViewget.java:72)
06-18 03:07:31.479: E/AndroidRuntime(751):  at android.view.View.performClick(View.java:4204)
06-18 03:07:31.479: E/AndroidRuntime(751):  at android.view.View$PerformClick.run(View.java:17355)
06-18 03:07:31.479: E/AndroidRuntime(751):  at android.os.Handler.handleCallback(Handler.java:725)
06-18 03:07:31.479: E/AndroidRuntime(751):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-18 03:07:31.479: E/AndroidRuntime(751):  at android.os.Looper.loop(Looper.java:137)
06-18 03:07:31.479: E/AndroidRuntime(751):  at android.app.ActivityThread.main(ActivityThread.java:5041)
06-18 03:07:31.479: E/AndroidRuntime(751):  at java.lang.reflect.Method.invokeNative(Native Method)
06-18 03:07:31.479: E/AndroidRuntime(751):  at java.lang.reflect.Method.invoke(Method.java:511)
06-18 03:07:31.479: E/AndroidRuntime(751):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-18 03:07:31.479: E/AndroidRuntime(751):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-18 03:07:31.479: E/AndroidRuntime(751):  at dalvik.system.NativeStart.main(Native Method)
06-18 03:07:31.569: D/dalvikvm(751): GC_CONCURRENT freed 367K, 17% free 2712K/3244K, paused 74ms+57ms, total 225ms
android:package com.tata.fdjl;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;import com.tata.fdjl.util.ClientCon;
public class LoginViewget extends Activity implements OnClickListener {
public EditText countnameedit;// 用户名编辑
public TextView countname;// 账户名称
public EditText countpwdedit;// 密码编辑
public TextView countpwd;// 账户密码
public Button login;// 登录
public Button regfd;// 注册
String loginname = null;
String loginpwd = null;
public ClientCon clientcon;
Handler hd;
final String Address = "http://192.168.1.12:8080/ghd01/login.do?username=admin&password=admin";
String msgStr = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 全屏
// requestWindowFeature(Window.FEATURE_NO_TITLE);
// getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
// WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.login);
countname = (TextView) findViewById(R.id.countname);
countnameedit = (EditText) findViewById(R.id.countnameedit);
countpwd = (TextView) findViewById(R.id.countpwd);
countpwdedit = (EditText) findViewById(R.id.countpwdedit);
login = (Button) findViewById(R.id.login);
regfd = (Button) findViewById(R.id.regfd);
// 添加按钮事件
login.setOnClickListener(this);
regfd.setOnClickListener(this);
} @Override
public void onClick(View v) {
if (v == login) {
// 执行登录处理
Loginsys(); } else if (v == regfd) {
// 注册
Register();
}
} public void Register() {
Intent intent = new Intent(LoginViewget.this, RegView.class);
startActivity(intent);
} // login----httpget
public void Loginsys() {
loginname = countnameedit.getText().toString().trim();
loginpwd = countpwdedit.getText().toString().trim();
if (loginname.matches("")) {
Toast.makeText(LoginViewget.this, "用户账户不能为空!", Toast.LENGTH_SHORT)
.show();
countnameedit.setFocusable(true);
return;
} else if (loginpwd.matches("")) {
Toast.makeText(LoginViewget.this, "用户密码不能为空!", Toast.LENGTH_SHORT)
.show();
countpwdedit.setFocusable(true);
} else {
//
// final Map<String, String> map = new HashMap<String, String>();
// map.put("loginname", loginname);
// map.put("loginpwd", loginpwd);

try {
HttpGet httpRequest = new HttpGet(Address);
Log.v("Sys", "111111");
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
if(httpResponse.getStatusLine().getStatusCode()==200)  {               
msgStr = EntityUtils.toString(httpResponse.getEntity());
//删除多余字符
msgStr = eregi_replace("\r\n|\r|\n|\n\r"," ",msgStr);
if (msgStr.equals("登录成功")) {
Toast.makeText(LoginViewget.this, "登录成功!", Toast.LENGTH_SHORT)
.show();
Log.v("Sys", "登录成功:");
gotoMainView();
} else {
Log.v("Sys", "登录失败:" + msgStr);
Toast.makeText(LoginViewget.this, "登录失败", Toast.LENGTH_SHORT).show();
}
}
else{
Log.v("Sys", "登录失败:" + msgStr);
Toast.makeText(LoginViewget.this, "登录失败", Toast.LENGTH_SHORT).show();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}
} private String eregi_replace(String string, String string2, String msgStr2) {
String strPattern = "?i"+string;
Pattern p = Pattern.compile(strPattern);
Matcher m = p.matcher(msgStr2);
if(m.find()){
return msgStr2.replaceAll(string, string2);
}
else{
return msgStr2;
}
} public void gotoMainView() {
Intent intent = new Intent(LoginViewget.this, CamFramain.class);
startActivity(intent);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.login_view, menu);
return true;
}
}
2、这种也不行:String Address = "http://127.0.0.1:8080/ghd01/login.do?";
try {
HttpPost httpRequest = new HttpPost(Address);
Log.v("Sys", "111111");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", loginname));
params.add(new BasicNameValuePair("password", loginpwd));
params.add(new BasicNameValuePair("flag", "0"));
httpRequest.setEntity(new UrlEncodedFormEntity(params,
HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
if(httpResponse.getStatusLine().getStatusCode()==200)  {               
  
msgStr = EntityUtils.toString(httpResponse.getEntity());
if (msgStr.equals("登录成功")) {
Toast.makeText(LoginView01.this, "登录成功!", Toast.LENGTH_SHORT)
.show();
Log.v("Sys", "登录成功:");
gotoMainView();
} else {
Log.v("Sys", "登录失败:" + msgStr);
Toast.makeText(LoginView01.this, "登录失败", Toast.LENGTH_SHORT).show();
}
}
else{
Log.v("Sys", "登录失败:" + msgStr);
Toast.makeText(LoginView01.this, "登录失败", Toast.LENGTH_SHORT).show();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

解决方案 »

  1.   


    web是用ssh架起来的,
    login.javapackage com.tata.actions;import java.io.PrintWriter;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;import org.apache.log4j.Logger;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;
    import org.apache.struts.actions.DispatchAction;import com.common.util.Constants;
    import com.tata.dao.TataDAO;
    import com.tata.forms.LoginForm;public class LoginAction extends DispatchAction { protected TataDAO tataDAO; Logger log = Logger.getLogger(this.getClass()); public TataDAO getTataDAO() {
    return tataDAO;
    } public void setTataDAO(TataDAO tataDAO) {
    this.tataDAO = tataDAO;
    } public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception { ActionErrors errors = new ActionErrors();
    ActionForward forward = new ActionForward();
    LoginForm loginForm = (LoginForm) form;
    PrintWriter pw=response.getWriter();
    try {
    // get parameters
    String username = loginForm.getUsername();
    log.info("User " + username + " login.");
    // invalidate the original session if exists
    HttpSession session = request.getSession(false);
    log.info("session " + session.toString() + " login.");
    if (session != null) {
    session.invalidate();
    }
    // create a new session for the user
    session = request.getSession(true);
    // login
    boolean isValid = valid(request, loginForm);
    if (isValid) {
    session.setAttribute(Constants.USERNAME_KEY, username);
    pw.write("登录成功");
    log.info("User " + username + " login.");
    } else {
    errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage(
    "login.message.failed"));
    pw.write("登录失败");
    log.info("User isValid " + isValid + " login.");
    }
    } catch (Exception e) {
    e.printStackTrace();
    errors.add(ActionErrors.GLOBAL_MESSAGE, new ActionMessage(
    "login.message.failed"));
    log.info("User Exception: "+e.getLocalizedMessage());
    log.info("e.getMessage(): "+e.getMessage());
    log.info("e.getMessage()22: "+e.toString());
    } // If a message is required, save the specified key(s)
    // into the request for use by the <struts:errors> tag. if (!errors.isEmpty()) {
    saveErrors(request, errors);
    request.setAttribute("loginFormBean", loginForm);
    forward = mapping.findForward(Constants.FAILURE_KEY);
    } else {
    forward = mapping.findForward(Constants.SUCCESS_KEY);
    } // Finish with
    return (forward);
    } private boolean valid(HttpServletRequest request, LoginForm loginForm) {
    if (getTataDAO().isValid(loginForm.getUsername(),
    loginForm.getPassword())) {
    return true;
    } else {
    return false;
    }
    }
    }loginform.javapackage com.tata.forms;import javax.servlet.http.HttpServletRequest;import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionMessage;public class LoginForm extends ActionForm { private static final long serialVersionUID = -8028907637588473959L; protected String username = null; protected String password = null; public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) {
    ActionErrors errors = new ActionErrors();
    if (username == null || username.equals("")) {
    errors.add("username", new ActionMessage(
    "login.error.username"));
    }
    if (password == null
    || password.equals("")) {
    errors.add("password", new ActionMessage(
    "login.error.password"));
    }
    arg1.setAttribute("loginFormBean", this);
    return errors;
    } public String getPassword() {
    return password;
    } public void setPassword(String password) {
    this.password = password;
    } public String getUsername() {
    return username;
    } public void setUsername(String username) {
    this.username = username;
    }
    }
    tataDAOpackage com.tata.dao;import java.util.List;import org.apache.log4j.Logger;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.criterion.Restrictions;
    import org.springframework.orm.hibernate3.HibernateCallback;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.tata.pojo.Tata;public class TataDAO extends HibernateDaoSupport implements ITataDAO {
    Logger log = Logger.getLogger(this.getClass());
    public boolean isValid(final String username, final String password) {
    List list = (List) getHibernateTemplate().execute(new HibernateCallback() {

    public Object doInHibernate(Session session)
    throws HibernateException {
    log.info("111111111");
    log.info("22222222"+Restrictions.eq("username", username)+"password: "+Restrictions.eq("password", password));
    List result = session.createCriteria(Tata.class).add(
    Restrictions.eq("username", username)).add(
    Restrictions.eq("password", password)).list();

    log.info("22222222");
    return result;
    }
    });log.info("33333"+list.size());
    if (list.size() > 0) {
    return true;
    } else {
    return false;
    }
    } public boolean isExist(final String username) {
    List list = (List) getHibernateTemplate().execute(new HibernateCallback() {
    public Object doInHibernate(Session session)
    throws HibernateException {
    List result = session.createCriteria(Tata.class).add(
    Restrictions.eq("username", username)).list();
    System.out.println("user: "+result);
    return result;
    }
    });
    if (list.size() > 0) {
    return true;
    } else {
    return false;
    }
    } public void insertTata(Tata tata) {
    System.out.println("开始insertUser ");
    getHibernateTemplate().saveOrUpdate(tata);
    System.out.println("getHibernateTemplate().saveOrUpdate(user): ");
    } public Tata getTata(String tataid) {
    return (Tata) getHibernateTemplate().get(Tata.class,
    new Integer(tataid));
    } public List getTatas() {
    return getHibernateTemplate().find("from Tata");
    } public void deleteTata(String tataid) {
    Object p = getHibernateTemplate().load(Tata.class, new Integer(tataid));
    getHibernateTemplate().delete(p);
    }
    }急啊,几天都没整出头绪来,请求大神看下,谢谢
      

  2.   

    已得到解决:
    new Thread(){  @Override  public void run(){  //你要执行的方法  //执行完毕后给handler发送一个空消息  handler.sendEmptyMessage(0);  }  }.start();            //定义Handler对象  private Handler handler =new Handler(){  @Override  //当有消息发送出来的时候就执行Handler的这个方法  public void handleMessage(Message msg){  super.handleMessage(msg);  //处理UI  }  }; 原文来自:雨枫技术教程网 http://www.fengfly.com
    原文网址:http://www.fengfly.com/plus/view-210886-1.html
      

  3.   

    android.os.NetworkOnMainThreadException
    网络操作不能放主线程