你好我過去我最初problem。我是一個完全的android noob,這是我的第一個應用程序。我正在Android模擬器上測試這個。我嘗試連接到一個.NET web服務http://192.168.3.47/service.asmx
。 我收到FileNotFoundException
。但它在那裏,網址是正確的。我怎麼能讓他看到?FileNotFoundException異常時調用webservice的
03-03 11:23:49.741: WARN/System.err(455): java.io.FileNotFoundException: http://192.168.3.47/service.asmx
03-03 11:23:49.751: WARN/System.err(455): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:521)
03-03 11:23:49.801: WARN/System.err(455): at gyozo.HelloWorld.HelloActivity.onClick(HelloActivity.java:62)
03-03 11:23:49.831: WARN/System.err(455): at android.view.View.performClick(View.java:2485)
03-03 11:23:49.851: WARN/System.err(455): at android.view.View$PerformClick.run(View.java:9080)
03-03 11:23:49.871: WARN/System.err(455): at android.os.Handler.handleCallback(Handler.java:587)
03-03 11:23:49.910: WARN/System.err(455): at android.os.Handler.dispatchMessage(Handler.java:92)
03-03 11:23:49.940: WARN/System.err(455): at android.os.Looper.loop(Looper.java:123)
03-03 11:23:49.950: WARN/System.err(455): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-03 11:23:50.010: WARN/System.err(455): at java.lang.reflect.Method.invokeNative(Native Method)
03-03 11:23:50.050: WARN/System.err(455): at java.lang.reflect.Method.invoke(Method.java:507)
03-03 11:23:50.070: WARN/System.err(455): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-03 11:23:50.090: WARN/System.err(455): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-03 11:23:50.110: WARN/System.err(455): at dalvik.system.NativeStart.main(Native Method)
這發生在這裏:InputStream is = connection.getInputStream();
URL url = new URL("http://192.168.3.47/service.asmx");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/soap+xml; charset=utf-8");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
String soapRequest = String.format(getText(R.string.ws_listemain_ds_new).toString(), city, keyword);
connection.setRequestProperty("Content-Length", Integer.toString(soapRequest.getBytes("UTF-8").length));
//Send request
OutputStreamWriter owr = new OutputStreamWriter(connection.getOutputStream(), "UTF-8");
owr.write(soapRequest);
owr.flush();
owr.close();
//Get Response
InputStream is = connection.getInputStream();
任何理由如果響應代碼實際上是400,我會得到這個錯誤?這麼奇怪! – 2011-03-08 16:16:08
HTTP錯誤代碼400是「錯誤的請求」。HttpURLConnection將爲400或更高版本引發FileNotFoundException。 – 2011-03-08 16:23:24
很好的回答。另外,如果你得到400或更高,並且服務器也發送一個正文給響應,你可以用'conn.getErrorStream()'方法得到它。 – 2013-08-09 16:32:00