2013-08-05 64 views
2
package com.sunil.phpconnect; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    HttpClient httpclient; 
    HttpGet request; 
    HttpResponse response; 
    String url; 

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

     // URL of PHP Script 

     url = "http://192.168.3.103/index.php"; 

     // TextView to display result 

     TextView result = (TextView) findViewById(R.id.tvResult); 

     // Try to connect using Apache HttpClient Library 
     try { 
      httpclient = new DefaultHttpClient(); 
      request = new HttpGet(url); 
      response = httpclient.execute(request); 
      } 

     catch (Exception e) { 
      e.printStackTrace(); 
      Toast.makeText(getApplicationContext(), "First Exception", Toast.LENGTH_LONG).show(); 
     } 

     // response code 
     try { 
      BufferedReader rd = new BufferedReader(new InputStreamReader(
        response.getEntity().getContent())); 
      String line = ""; 
      while ((line = rd.readLine()) != null) { 

       // Appending result to textview 
       result.append(line); 
      } 
     } catch (Exception e) { 
      Toast.makeText(getApplicationContext(), "Second Exception", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

我無法從含接收從PHP請求到Android

<?php 
echo "Hello PHP"; 
?> 

什麼是代碼中的問題,我的PHP文件中收到的要求? 我發送Http請求到php文件,但沒有收到所需的結果。 據我認爲,在URL中有問題。 給我的建議

MY logcat的

08-05 05:07:30.311: W/System.err(2009): android.os.NetworkOnMainThreadException 
08-05 05:07:30.321: W/System.err(2009):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117) 
08-05 05:07:30.331: W/System.err(2009):  at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 
08-05 05:07:30.341: W/System.err(2009):  at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 
08-05 05:07:30.341: W/System.err(2009):  at libcore.io.IoBridge.connect(IoBridge.java:112) 
08-05 05:07:30.341: W/System.err(2009):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
08-05 05:07:30.341: W/System.err(2009):  at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459) 
08-05 05:07:30.341: W/System.err(2009):  at java.net.Socket.connect(Socket.java:842) 
08-05 05:07:30.341: W/System.err(2009):  at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:119) 
08-05 05:07:30.341: W/System.err(2009):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:144) 
08-05 05:07:30.341: W/System.err(2009):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
08-05 05:07:30.361: W/System.err(2009):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
08-05 05:07:30.361: W/System.err(2009):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
08-05 05:07:30.361: W/System.err(2009):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
08-05 05:07:30.361: W/System.err(2009):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
08-05 05:07:30.361: W/System.err(2009):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
08-05 05:07:30.361: W/System.err(2009):  at com.sunil.phpconnect.MainActivity.onCreate(MainActivity.java:40) 
08-05 05:07:30.381: W/System.err(2009):  at android.app.Activity.performCreate(Activity.java:5104) 
08-05 05:07:30.381: W/System.err(2009):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
08-05 05:07:30.381: W/System.err(2009):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
08-05 05:07:30.381: W/System.err(2009):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
08-05 05:07:30.381: W/System.err(2009):  at android.app.ActivityThread.access$600(ActivityThread.java:141) 
08-05 05:07:30.381: W/System.err(2009):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
08-05 05:07:30.381: W/System.err(2009):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-05 05:07:30.381: W/System.err(2009):  at android.os.Looper.loop(Looper.java:137) 
08-05 05:07:30.381: W/System.err(2009):  at android.app.ActivityThread.main(ActivityThread.java:5039) 
08-05 05:07:30.381: W/System.err(2009):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-05 05:07:30.381: W/System.err(2009):  at java.lang.reflect.Method.invoke(Method.java:511) 
08-05 05:07:30.393: W/System.err(2009):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
08-05 05:07:30.401: W/System.err(2009):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
08-05 05:07:30.401: W/System.err(2009):  at dalvik.system.NativeStart.main(Native Method) 
+0

有任何異常 – DevZer0

+1

我的日誌貓:https://skydrive.live.com/redir?resid=7BEB3A827335E4F7!2034&authkey=!AGA8dcNFGhEVJTM –

+0

使用過這個並且工作了 \t \t if(android.os.Build.VERSION.SDK_INT> 9)StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()。permitAll()。build(); StrictMode。setThreadPolicy(政策); } –

回答

0

如果您正在使用更高版本的SDK使用這個下面的代碼

   if (android.os.Build.VERSION.SDK_INT > 9) { 
       StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
       StrictMode.setThreadPolicy(policy); 
      } 
+0

謝謝你非常非常 –

+0

這是不好的做法,你不應該推廣這種類型的做法 – DevZer0

0

阿米爾, 儘量不要使用 http://127.0.0.1/網址,從您這將指向Android的本地主機,我認爲Android設備是不是在您的PHP文件是。如果設備和php服務器在同一本地網絡上,請改用本地IP地址。

+0

我在我的模擬器瀏覽器中使用了這個IP地址(url =「http://10.0.2.2/index.php」;),它正在工作,但不在我的代碼中。它移動到第一收集block.Why –

+0

使用該和工作 \t \t如果(android.os.Build.VERSION.SDK_INT> 9){ StrictMode.ThreadPolicy政策=新StrictMode.ThreadPolicy.Builder()。permitAll() 。建立(); StrictMode.setThreadPolicy(policy); } –

0

使用ip地址,而不是127.0.0.1本地主機

在命令提示符下輸入ipconfig並得到您的ipaddress

+0

我在我的模擬器瀏覽器中使用了這個IP地址(url =「http://10.0.2.2/index.php」;),它正在工作,但不在我的代碼中。它正在移動到第一個catch塊。爲什麼? –

+0

互聯網是? –

+0

10.0.2.2是你的IP地址嗎? –

0

你有沒有檢查你的清單文件,你有沒有實現INTERNET權限?

+0

是的,我已經給予互聯網許可 –

0

使用ip address 10.0.2.2 instead of 127.0.0.1

所以通過改變嘗試

url = "http://10.0.2.2/index.php"; 

PS。

要麼使用AysncTask

或在您的onCreate()setContentView(R.layout.activity_main);

if (android.os.Build.VERSION.SDK_INT > 9) { 
      StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
        .permitAll().build(); 
      StrictMode.setThreadPolicy(policy); 
     } 
+0

我在我的模擬器瀏覽器中使用了這個IP地址(url =「http://10.0.2.2/index.php」;),它正在工作,但不在我的代碼中。它正在移動到第一個catch塊。爲什麼 –

+0

@AamirMukaram'在你的catch塊中打印堆棧跟蹤並將其發佈到你的問題'打印堆棧跟蹤使用'e.printStackTrace();'catch塊內部! –

+0

我正在使用android一個星期,我寫了這個e.printStackTrace(); 在我的catch塊現在該怎麼做。我必須發佈 –

0

您的問題是在主線程的執行網絡活動添加以下代碼。

08-05 05:07:30.311: W/System.err(2009): android.os.NetworkOnMainThreadException 

這種類型的行爲可能導致ANR(活動未響應),因爲UI線程被I/O活動阻塞。您建議使用AsyncTask來執行此操作。