Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:从url执行php,给出NetworkOnMainThreadException_Java_Android - Fatal编程技术网

Java Android:从url执行php,给出NetworkOnMainThreadException

Java Android:从url执行php,给出NetworkOnMainThreadException,java,android,Java,Android,我想执行php文件,它将文件从android复制到不同的文件夹。我正在运行简单的代码来执行包含php文件的路径,但它正在执行,而不是正在执行 当我执行时,Php文件正在工作,但我想从android执行。这是我在下面发布的java/android代码 Compile.java package com.coded.sandeep; import java.net.URL; import android.app.Activity; import android.app.ProgressDialog;

我想执行php文件,它将文件从android复制到不同的文件夹。我正在运行简单的代码来执行包含php文件的路径,但它正在执行,而不是正在执行

当我执行时,Php文件正在工作,但我想从android执行。这是我在下面发布的java/android代码

Compile.java

package com.coded.sandeep;

import java.net.URL;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;


public class Compile extends Activity {


        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            //Sending the php file path 
            String php_send="http://localhost/Android/App/copy.php?Coords=allahwariya.mp3";

            // want to execute the above path using Http client but it is not working 
            HttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(php_send);
            try
            {   
                HttpResponse resp = client.execute(httpGet);
                System.out.println(resp);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

    }

}
在我的logcat中没有错误,同时php代码也没有被执行

LOGCAT

07-11 01:30:25.930: W/System.err(1359): android.os.NetworkOnMainThreadException
07-11 01:30:25.970: W/System.err(1359):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
07-11 01:30:25.990: W/System.err(1359):     at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
07-11 01:30:25.990: W/System.err(1359):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
07-11 01:30:26.000: W/System.err(1359):     at java.net.InetAddress.getAllByName(InetAddress.java:214)
07-11 01:30:26.030: W/System.err(1359):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
07-11 01:30:26.040: W/System.err(1359):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
07-11 01:30:26.040: W/System.err(1359):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
07-11 01:30:26.050: W/System.err(1359):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
07-11 01:30:26.080: W/System.err(1359):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
07-11 01:30:26.090: W/System.err(1359):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
07-11 01:30:26.100: W/System.err(1359):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
07-11 01:30:26.110: W/System.err(1359):     at com.prgguru.example.AsyncTaskExample.onCreate(AsyncTaskExample.java:73)
07-11 01:30:26.130: W/System.err(1359):     at android.app.Activity.performCreate(Activity.java:5231)
07-11 01:30:26.140: W/System.err(1359):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
07-11 01:30:26.150: W/System.err(1359):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
07-11 01:30:26.160: W/System.err(1359):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
07-11 01:30:26.180: W/System.err(1359):     at android.app.ActivityThread.access$800(ActivityThread.java:135)
07-11 01:30:26.190: W/System.err(1359):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
07-11 01:30:26.200: W/System.err(1359):     at android.os.Handler.dispatchMessage(Handler.java:102)
07-11 01:30:26.200: W/System.err(1359):     at android.os.Looper.loop(Looper.java:136)
07-11 01:30:26.220: W/System.err(1359):     at android.app.ActivityThread.main(ActivityThread.java:5017)
07-11 01:30:26.230: W/System.err(1359):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 01:30:26.230: W/System.err(1359):     at java.lang.reflect.Method.invoke(Method.java:515)
07-11 01:30:26.250: W/System.err(1359):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-11 01:30:26.260: W/System.err(1359):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-11 01:30:26.270: W/System.err(1359):     at dalvik.system.NativeStart.main(Native Method)
07-11 01:30:27.060: D/dalvikvm(1359): GC_FOR_ALLOC freed 246K, 10% free 3032K/3360K, paused 60ms, total 70ms
07-11 01:30:27.240: D/gralloc_goldfish(1359): Emulator without GPU emulation detected.
有人能告诉我如何从java执行php文件吗?

您应该用于URL调用和避免NetworkMainThread异常

public class Compile extends Activity {


        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            new AsyncTaskOperation().execute();

       }// End of oncreate

        private class AsyncTaskOperation extends AsyncTask <String, Void, Void>
        {
            protected void onPreExecute() { /* Activities before URL call*/ }

            protected void onPreExecute() { /* Activities after URL Call*/ }

            @Override
             protected Void doInBackground(String... paramsObj) {

           //Sending the php file path 
            String php_send="http://localhost/Android/App/copy.php?Coords=allahwariya.mp3";

            // want to execute the above path using Http client but it is not working 
            HttpClient client = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(php_send);
            try
            {   
                HttpResponse resp = client.execute(httpGet);
                System.out.println(resp);
                 if (httpResponse != null){
                     HttpEntity httpEntity = httpResponse.getEntity();
                      try {
               responseString = EntityUtils.toString(httpEntity);
          } catch (ParseException e) {
            } catch (IOException e) {
            }
                  }// End of if resonse is null
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }

            return null;
        }


        } // End of class AsyncTaskOperation 


}// End of class compile
公共类编译扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
新建AsyncTaskOperation().execute();
}//oncreate结束
私有类AsyncTaskOperation扩展了AsyncTask
{
受保护的void onPreExecute(){/*URL调用前的活动*/}
受保护的void onPreExecute(){/*URL调用后的活动*/}
@凌驾
受保护的Void doInBackground(字符串…paramsObj){
//发送php文件路径
字符串php_send=”http://localhost/Android/App/copy.php?Coords=allahwariya.mp3";
//希望使用Http客户端执行上述路径,但该路径不起作用
HttpClient=new DefaultHttpClient();
HttpGet-HttpGet=newhttpget(php\u-send);
尝试
{   
HttpResponse resp=client.execute(httpGet);
系统输出打印项次(resp);
if(httpResponse!=null){
HttpEntity HttpEntity=httpResponse.getEntity();
试一试{
responseString=EntityUtils.toString(httpEntity);
}捕获(解析异常){
}捕获(IOE异常){
}
}//如果响应为空,则结束
}
捕获(例外e)
{
e、 printStackTrace();
}
返回null;
}
}//类结束AsyncTaskOperation
}//类结束编译

如何执行未执行的php文件是正确的方法,该方法已在上面的java程序@Nishanthi中实现Grashia@ANNNCHOOOR:请参考我的答案,了解如何调用和处理URL响应。字符串“RealString”将包含Web服务响应。@ ANNCHOOOR:如果有帮助的话,您可以考虑以投票和接受的方式进行回答。谢谢您遇到了什么错误?@ANNNCHOOOR:您的URL是本地主机。这就是它不起作用的原因。如果在模拟器上使用,请将正确的服务器URL或ateast放在本地服务器IP上。如何执行它未执行的php文件是正确的方法,该方法已在上面的java程序@mihail中实现