2012-07-16 20 views
1

我在從我的Android應用程序到我的Google應用程序執行簡單的http發佈請求時遇到問題。Android應用程序doPost

因此,這裏的錯誤消息:

07-16 15:58:02.314: E/AndroidRuntime(911): FATAL EXCEPTION: main 
07-16 15:58:02.314: E/AndroidRuntime(911): java.lang.IllegalStateException: Could not  execute method of the activity 

它在httpclient.execute命令發生在我的Android應用:

ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo(); 
HttpClient httpclient = new DefaultHttpClient(); 
HttpPost httppost = new HttpPost("http://localhost:8888/mywebapp"); 
try { 
// Execute HTTP Post Request 
HttpResponse response = httpclient.execute(httppost); 
} 

我的服務器上沒有任何痕跡,我在我到達post方法:

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
System.out.println("SYL: POST request received"); 
super.doPost(req, resp); 
} 

服務器是谷歌webb應用程序在本地運行在我的本地與此conf:

<servlet-name>MyWebApp</servlet-name> 
<servlet-class>com.my.mywebapp.MyWebAppServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>MyWebApp</servlet-name> 
<url-pattern>/mywebapp/*</url-pattern> 
</servlet-mapping> 

如果測試get方法,我通過web瀏覽器調用它的工作。 但是在java中調用get(和我爲這篇文章一樣)不起作用。 它像在android應用程序中的連接不能與我的服務器。

我把這些權限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

有人可以幫我嗎?

謝謝。

PS:

仍與10.0.2.2替換本地主機相同的錯誤。 我複製完整的跟蹤:

07-16 18:13:34.945: E/AndroidRuntime(1081): FATAL EXCEPTION: main 
07-16 18:13:34.945: E/AndroidRuntime(1081): java.lang.IllegalStateException: Could not execute method of the activity 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.view.View$1.onClick(View.java:3044) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.view.View.performClick(View.java:3511) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.view.View$PerformClick.run(View.java:14105) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.os.Handler.handleCallback(Handler.java:605) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.os.Looper.loop(Looper.java:137) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.app.ActivityThread.main(ActivityThread.java:4424) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at dalvik.system.NativeStart.main(Native Method) 
07-16 18:13:34.945: E/AndroidRuntime(1081): Caused by: java.lang.reflect.InvocationTargetException 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at java.lang.reflect.Method.invoke(Method.java:511) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.view.View$1.onClick(View.java:3039) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  ... 11 more 
07-16 18:13:34.945: E/AndroidRuntime(1081): Caused by: android.os.NetworkOnMainThreadException 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at java.net.InetAddress.lookupHostByName(InetAddress.java:391) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at java.net.InetAddress.getAllByName(InetAddress.java:220) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  at com.my.my.MyActivity.sendMessage(MyActivity.java:72) 
07-16 18:13:34.945: E/AndroidRuntime(1081):  ... 14 more 
+0

你的UI線程上這樣做呢?你應該發佈整個例外 – 2012-07-16 16:38:14

+0

好吧,那是!我創建了一個線程,它的工作.. – Tyvain 2012-07-16 19:42:18

回答

2

如果要在本地服務器調試,更改您要訪問的IP,並設置這一項:10.0.2.2。 所以,你httpost看起來是這樣的:

HttpPost httppost = new HttpPost("http://10.0.2.2:8888/mywebapp"); 

欲瞭解更多信息,http://developer.android.com/tools/devices/emulator.html#networkaddresses

+0

Stil同樣的錯誤。我編輯我的問題,並把完整的錯誤跟蹤... – Tyvain 2012-07-16 18:43:37

+0

解決。非常感謝(問題是地址和事實我沒有把電話放在一個線程中) – Tyvain 2012-07-16 19:44:54