【求助】安卓通过servlet访问数据库问题

博主尝试在安卓应用中通过servlet访问mysql数据库,已验证服务端功能正常,但在安卓客户端执行时遇到NetworkOnMainThreadException错误。客户端代码使用HttpGet发起请求,点击按钮触发login()方法,当执行到网络请求部分时抛出异常,导致无法连接到服务器。
摘要由CSDN通过智能技术生成
想通过servlet中转访问mysql数据库,服务端写好了,验证可以访问。但是安卓端总是在连接时报错,求大神指点。
安卓端代码为:
package com.example.android;

import java.io.IOException;
import java.io.Serializable;

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.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.DialogInterface;
import android.view.View.OnClickListener; 
import android.net.ParseException;
import android.os.Bundle;
import android.os.StrictMode;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
 
   Button mButton;     
       TextView mTextView;
        
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
 mButton= (Button) findViewById(R.id.button1);
         mTextView= (TextView) findViewById(R.id.textView1);
         mButton.setOnClickListener(new Button.OnClickListener() {  
          //String content;
             @Override  

             public void onClick(View v) {  
            login();
        }

private void login() {
// TODO Auto-generated method stub
String url="http://10.9.3.14:8080/servlet/servlet?username=aa";     
  //即相当于http://10.81.36.187:8080/orderdishes/orderdishes_servlet?username="a",其中的//username对应"a",后面会用到  
  
              String result = "";  
  
              System.out.println("1");  
  
              HttpGet request = new HttpGet(url);     //调用servlet的doget方法  
  
              System.out.println("2");  
  
               //在这里执行请求,访问url,并获取响应  
  
              HttpResponse response = null;
try {
response = new DefaultHttpClient().execute(request);
} catch (ClientProtocolException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch bloc
e1.printStackTrace();
}   
  
              System.out.println("3");  
  
//获取返回码,等于200即表示连接成功,并获得响应  
  
              if(response.getStatusLine().getStatusCode() == 200) {  
  
                     System.out.println("4");  
  
                     try {
result= EntityUtils.toString(response.getEntity());
} catch (org.apache.http.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}  //获取响应中的数据  
  
                     System.out.println("result"+ result);  
  
              }else {  
  
                     System.out.println("连接失败");  
              }  
  
}            
      });  
         
}
}

报错logcat中的问题为:
07-11 12:50:07.173: D/ActivityThread(5042): setTargetHeapUtilization:0.25
07-11 12:50:07.173: D/ActivityThread(5042): setTargetHeapIdealFree:8388608
07-11 12:50:07.173: D/ActivityThread(5042): setTargetHeapConcurrentStart:2097152
07-11 12:50:07.603: E/AdFireWallNative(5042): AdFrieWall JNI_OnLoad
07-11 12:50:07.603: E/AdFireWallNative(5042): AdFireWall JNI_OnLoad done.
07-11 12:50:07.654: W/IconCustomizer(5042): can't load transform_config.xml
07-11 12:50:07.954: I/Adreno200-EGL(5042): <qeglDrvAPI_eglInitialize:294>: EGL 1.4 QUALCOMM build:  (CL3090659)
07-11 12:50:07.954: I/Adreno200-EGL(5042): Build Date: 09/03/13 Tue
07-11 12:50:07.954: I/Adreno200-EGL(5042): Local Branch: 
07-11 12:50:07.954: I/Adreno200-EGL(5042): Remote Branch: 
07-11 12:50:07.954: I/Adreno200-EGL(5042): Local Patches: 
07-11 12:50:07.954: I/Adreno200-EGL(5042): Reconstruct Branch: 
07-11 12:50:08.995: I/System.out(5042): 1
07-11 12:50:08.995: I/System.out(5042): 2
07-11 12:50:09.035: W/dalvikvm(5042): threadid=1: thread exiting with uncaught exception (group=0x4193b498)
07-11 12:50:09.055: E/AndroidRuntime(5042): FATAL EXCEPTION: main
07-11 12:50:09.055: E/AndroidRuntime(5042): android.os.NetworkOnMainThreadException
07-11 12:50:09.055: E/AndroidRuntime(5042):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at libcore.io.IoBridge.connect(IoBridge.java:112)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:460)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at java.net.Socket.connect(Socket.java:832)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at com.example.android.MainActivity$1.login(MainActivity.java:66)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at com.example.android.MainActivity$1.onClick(MainActivity.java:46)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at android.view.View.performClick(View.java:4171)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at android.view.View$PerformClick.run(View.java:17097)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at android.os.Handler.handleCallback(Handler.java:615)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at android.os.Handler.dispatchMessage(Handler.java:92)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at android.os.Looper.loop(Looper.java:137)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at android.app.ActivityThread.main(ActivityThread.java:4897)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at java.lang.reflect.Method.invokeNative(Native Method)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at java.lang.reflect.Method.invoke(Method.java:511)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
07-11 12:50:09.055: E/AndroidRuntime(5042):  at dalvik.system.NativeStart.main(Native Method)

坐等指点,我分数不多,求不吝指教!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值