Java 将数据从Android插入PHP文件,然后插入Mysql错误
我正在用android应用程序中的一个函数将数据插入mysql数据库,但每次单击按钮执行时,它都会崩溃。以下是我得到的错误: 10-08 16:16:05.649:E/AndroidRuntime(19038):致命异常:主 10-08 16:16:05.649:E/AndroidRuntime(19038):android.os.NetworkOnMainThreadException 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1125) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于java.net.InetAddress.lookupHostByName(InetAddress.java:385) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于java.net.InetAddress.getAllByName(InetAddress.java:214) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:670) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:509) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于com.example.gloc.MainActivity.insert(MainActivity.java:360) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于com.example.gloc.MainActivity$3.onClick(MainActivity.java:217) 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.view.view.performClick(view.java:4354)上 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.view.view$PerformClick.run(view.java:17961) 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.os.Handler.handleCallback(Handler.java:725)上 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.os.Handler.dispatchMessage(Handler.java:92)上 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.os.Looper.loop(Looper.java:137) 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.app.ActivityThread.main(ActivityThread.java:5328)上 10-08 16:16:05.649:E/AndroidRuntime(19038):位于java.lang.reflect.Method.Invokenactive(本机方法) 10-08 16:16:05.649:E/AndroidRuntime(19038):位于java.lang.reflect.Method.invoke(Method.java:511) 10-08 16:16:05.649:E/AndroidRuntime(19038):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 10-08 16:16:05.649:E/AndroidRuntime(19038):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 10-08 16:16:05.649:E/AndroidRuntime(19038):在dalvik.system.NativeStart.main(本机方法) 这是我的密码Java 将数据从Android插入PHP文件,然后插入Mysql错误,java,android,mysql,android-intent,Java,Android,Mysql,Android Intent,我正在用android应用程序中的一个函数将数据插入mysql数据库,但每次单击按钮执行时,它都会崩溃。以下是我得到的错误: 10-08 16:16:05.649:E/AndroidRuntime(19038):致命异常:主 10-08 16:16:05.649:E/AndroidRuntime(19038):android.os.NetworkOnMainThreadException 10-08 16:16:05.649:E/AndroidRuntime(19038):在android.os
public void insert(){
String input_data= "http://www.wolfdoginfo.net/app/dataapp.php"; //URL website anda dengan file insert.php yang telah dibuat
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(input_data);
ArrayList<NameValuePair> param = new ArrayList<NameValuePair>();
final EditText reguser = (EditText) findViewById(R.id.usernamecomplete);
final EditText regpass = (EditText) findViewById(R.id.passwordcomplete);
final EditText regemail = (EditText) findViewById(R.id.email);
String password = regpass.getText().toString();
password = md5(password);
param.add(new BasicNameValuePair("username", reguser.getText().toString()));
param.add(new BasicNameValuePair("password", password));
param.add(new BasicNameValuePair("email", regemail.getText().toString()));
try {
httpPost.setEntity(new UrlEncodedFormEntity(param));
HttpResponse httpRespose = httpClient.execute(httpPost);
HttpEntity httpEntity = httpRespose.getEntity();
InputStream in = httpEntity.getContent();
BufferedReader read = new BufferedReader(new InputStreamReader(in));
String isi= "";
String baris= "";
while((baris = read.readLine())!=null){
isi+= baris;
}
//Jika isi tidak sama dengan "null " maka akan tampil Toast "Berhasil" sebaliknya akan tampil "Gagal"
if(!isi.equals("null")){
Toast.makeText(this, "Berhasil", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(this, "Gagal", Toast.LENGTH_LONG).show();
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public void insert(){
字符串输入_数据=”http://www.wolfdoginfo.net/app/dataapp.php“;//URL网站和文件insert.php
HttpClient HttpClient=新的DefaultHttpClient();
HttpPost HttpPost=新的HttpPost(输入_数据);
ArrayList param=新的ArrayList();
final EditText reguser=(EditText)findViewById(R.id.usernamecomplete);
最终EditText regpass=(EditText)findViewById(R.id.passwordcomplete);
final EditText regemail=(EditText)findViewById(R.id.email);
字符串密码=regpass.getText().toString();
密码=md5(密码);
add(新的BasicNameValuePair(“用户名”,reguser.getText().toString());
参数添加(新的BasicNameValuePair(“密码”,password));
add(新的BasicNameValuePair(“email”,regemail.getText().toString());
试试{
setEntity(新的UrlEncodedFormEntity(参数));
HttpResponse HttpResponse=httpClient.execute(httpPost);
HttpEntity HttpEntity=httpRespose.getEntity();
InputStream in=httpEntity.getContent();
BufferedReader read=新的BufferedReader(新的InputStreamReader(in));
字符串isi=“”;
字符串baris=“”;
而((baris=read.readLine())!=null){
isi+=baris;
}
//如果是“空”的话,那么就不会是“空”的了
如果(!isi.equals(“null”){
Toast.makeText(这是“Berhasil”,Toast.LENGTH_LONG).show();
}否则{
Toast.makeText(这是“Gagal”,Toast.LENGTH_LONG).show();
}
}catch(ClientProtocolException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}您需要在单独的线程中发出HTTP请求。你会很容易找到一个例子来证明这一点。看看这个:
好的,我把它放在一个线程下,但仍然没有保存到数据库。我回答了最初的问题。如果插入不起作用,您的PHP代码很可能就是罪魁祸首。即使在单独的线程上运行代码,您是否也会遇到相同的异常?