Java 使用Android Studio将数据发送到Php脚本

Java 使用Android Studio将数据发送到Php脚本,java,android,Java,Android,我必须将Android应用程序中的一些参数发送到Php脚本,以便插入数据库。 我在Eclipse上尝试了这个脚本,效果很好。 但当我尝试在Android上运行它时,它崩溃了 publicstaticvoidinsert(){ 试一试{ //打开与站点的连接 URL=新URL(“http://192.168.1.105/JavaInsert.php"); URLConnection con=url.openConnection(); //激活输出 con.设置输出(真); PrintStream

我必须将Android应用程序中的一些参数发送到Php脚本,以便插入数据库。 我在Eclipse上尝试了这个脚本,效果很好。 但当我尝试在Android上运行它时,它崩溃了

publicstaticvoidinsert(){
试一试{
//打开与站点的连接
URL=新URL(“http://192.168.1.105/JavaInsert.php");
URLConnection con=url.openConnection();
//激活输出
con.设置输出(真);
PrintStream ps=新的PrintStream(con.getOutputStream());
//将参数发送到站点
ps.print(“&电子邮件=random@gmail.com");
//ps.print(“&Company=Company”);
//ps.print(“&Shares=Shares”);
//ps.print(“&Date=Date”);
con.getInputStream();
ps.close();
}捕获(格式错误的异常e1){
e1.printStackTrace();
系统输出打印(“数据库错误1”);
}捕获(IOE2异常){
e2.printStackTrace();
系统输出打印(“数据库错误1”);
}
}
LogCat部分中存在这些错误

07-28 14:28:07.259 20554-20554/com.example.ivan.rocketsocialstudioapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ivan.rocketsocialstudioapp, PID: 20554
    java.lang.IllegalStateException: Could not execute method for android:onClick
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:389)
        at android.view.View.performClick(View.java:6663)
        at android.view.View.performClickInternal(View.java:6635)
        at android.view.View.access$3100(View.java:794)
        at android.view.View$PerformClick.run(View.java:26199)
        at android.os.Handler.handleCallback(Handler.java:907)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:216)
        at android.app.ActivityThread.main(ActivityThread.java:7593)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384)
        at android.view.View.performClick(View.java:6663) 
        at android.view.View.performClickInternal(View.java:6635) 
        at android.view.View.access$3100(View.java:794) 
        at android.view.View$PerformClick.run(View.java:26199) 
        at android.os.Handler.handleCallback(Handler.java:907) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:216) 
        at android.app.ActivityThread.main(ActivityThread.java:7593) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987) 
     Caused by: android.os.NetworkOnMainThreadException
        at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1523)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:231)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:213)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:621)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:141)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:258)
        at com.example.ivan.rocketsocialstudioapp.MainActivity.Insert(MainActivity.java:72)
        at com.example.ivan.rocketsocialstudioapp.MainActivity.send(MainActivity.java:45)
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:384) 
        at android.view.View.performClick(View.java:6663) 
        at android.view.View.performClickInternal(View.java:6635) 
        at android.view.View.access$3100(View.java:794) 
        at android.view.View$PerformClick.run(View.java:26199) 
        at android.os.Handler.handleCallback(Handler.java:907) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:216) 
        at android.app.ActivityThread.main(ActivityThread.java:7593) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987) 
07-28 14:28:07.284 20554-20554/com.example.ivan.rocketsocialstudioapp I/Process: Sending signal. PID: 20554 SIG: 9

Php脚本与Eclipse一起工作。
我还添加了android网络和Internet权限,因为您无法在主线程上运行网络操作,这将导致您遇到的
NetworkMainThreadException


尝试使用网络库或对异步任务执行此操作

您需要创建可运行线程或异步任务来运行网络操作

看看我下面的例子

 private void login() {

    JSONObject request = new JSONObject();
    try {
        //Populate the request parameters
        request.put(KEY_USERNAME, username);
        request.put(KEY_PASSWORD, password);
        //Log.v("test", request.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
    JsonObjectRequest jsArrayRequest = new JsonObjectRequest
            (Request.Method.POST, login_url, request, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    pDialog.dismiss();
                    try {
                        //Check if user got logged in successfully

                        if (response.getInt(KEY_STATUS) == 0) {
                            session.loginUser(username, response.getString(KEY_FULL_NAME));
                            loadDashboard();

                        } else {
                            Toast.makeText(getApplicationContext(),
                                    response.getString(KEY_MESSAGE), Toast.LENGTH_SHORT).show();

                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    pDialog.dismiss();

                    //Display error message whenever an error occurs
                    Toast.makeText(getApplicationContext(),
                            error.getMessage(), Toast.LENGTH_SHORT).show();
                }
            });
private void login(){
JSONObject请求=新建JSONObject();
试一试{
//填充请求参数
请求.输入(密钥\用户名,用户名);
请求。输入(钥匙密码、密码);
//Log.v(“test”,request.toString());
}捕获(JSONException e){
e、 printStackTrace();
}
JsonObjectRequest jsArrayRequest=新JsonObjectRequest
(Request.Method.POST,login_url,Request,new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
pDialog.disclose();
试一试{
//检查用户是否成功登录
if(response.getInt(KEY_STATUS)==0){
logiuser(用户名,response.getString(KEY\u全名));
loadDashboard();
}否则{
Toast.makeText(getApplicationContext(),
response.getString(KEY_MESSAGE),Toast.LENGTH_SHORT.show();
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
pDialog.disclose();
//每当发生错误时显示错误消息
Toast.makeText(getApplicationContext(),
错误.getMessage(),Toast.LENGTH_SHORT).show();
}
});

请共享日志。顺便说一句:注意java命名约定。方法名称应以小写字母开头。ip地址rss 192.168.1.105可通过手机访问?@Jens是的,可以访问