如何通过http协议访问tomcat url
各位大侠,我在通过http协议访问下面的url时失败,请各位帮忙看看是什么原因造成的。
我的url:
private static final String strUrl = "http://10.0.2.2:9090/receipt";
我的代码,获取页面代码:
private void getContent2(String strurl){
try{
URL url = new URL(strurl);
Log.d("HTTPINFO:", url.toString());
HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();
Log.d("HTTPINFO:", "urlConn.openConnection");
urlConn.setDoInput(true);//设置输入流采用字节流
urlConn.connect();//程序运行到这里时就不往下走了,然后就弹出下面的错误信息Log.d("HTTPINFO:", "urlConn.connect ");
////下面开始做接收工作
InputStream ins = urlConn.getInputStream();
Log.d("HTTPINFO:","inputstream");
InputStreamReader insr = new InputStreamReader(ins);
Log.d("HTTPINFO:", "InputStreamReader");
BufferedReader bufferReader = new BufferedReader(insr);
Log.d("HTTPINFO:", "BufferedReader");
String result="";
String readLine=null;
while((readLine=bufferReader.readLine())!=null){
result+=readLine;
}
Log.d("HTTPINFO:", "result");
insr.close();
urlConn.disconnect();
//将接受到的数据显示出来
textView.setText(URLDecoder.decode(result,"utf-8"));
}catch(Exception e){
Toast.makeText(MainActivity.this,"错误:"+e.getCause().getMessage(),Toast.LENGTH_SHORT).show();
}
}
下面是错误信息:
URL Tomcat http协议
07-15 03:29:54.606: D/HTTPINFO:(970): http://10.0.2.2:9090/receipt
07-15 03:29:54.606: D/HTTPINFO:(970): urlConn.openConnection
07-15 03:29:54.686: W/System.err(970): android.os.NetworkOnMainThreadException
07-15 03:29:54.716: W/System.err(970): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
07-15 03:29:54.726: W/System.err(970): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
07-15 03:29:54.736: W/System.err(970): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
07-15 03:29:54.736: W/System.err(970): at libcore.io.IoBridge.connect(IoBridge.java:112)
07-15 03:29:54.736: W/System.err(970): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
07-15 03:29:54.736: W/System.err(970): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:459)
07-15 03:29:54.746: W/System.err(970): at java.net.Socket.connect(Socket.java:842)
07-15 03:29:54.746: W/System.err(970): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:76)
07-15 03:29:54.756: W/System.err(970): at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
07-15 03:29:54.766: W/System.err(970): at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:340)
07-15 03:29:54.776: W/System.err(970): at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
07-15 03:29:54.776: W/System.err(970): at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
07-15 03:29:54.776: W/System.err(970): at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
07-15 03:29:54.786: W/System.err(970): at libcore.net.http.HttpEngine.connect(HttpEngine.java:311)
07-15 03:29:54.796: W/System.err(970): at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
07-15 03:29:54.796: W/System.err(970): at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
07-15 03:29:54.836: W/System.err(970): at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
07-15 03:29:54.836: W/System.err(970): at com.example.myhttp.MainActivity.getContent2(MainActivity.java:93)
07-15 03:29:54.846: W/System.err(970): at com.example.myhttp.MainActivity.access$0(MainActivity.java:79)
07-15 03:29:54.866: W/System.err(970): at com.example.myhttp.MainActivity$1.onClick(MainActivity.java:69)
07-15 03:29:54.866: W/System.err(970): at android.view.View.performClick(View.java:4204)
07-15 03:29:54.866: W/System.err(970): at android.view.View$PerformClick.run(View.java:17355)
07-15 03:29:54.876: W/System.err(970): at android.os.Handler.handleCallback(Handler.java:725)
07-15 03:29:54.876: W/System.err(970): at android.os.Handler.dispatchMessage(Handler.java:92)
07-15 03:29:54.887: W/System.err(970): at android.os.Looper.loop(Looper.java:137)
07-15 03:29:54.896: W/System.err(970): at android.app.ActivityThread.main(ActivityThread.java:5041)
07-15 03:29:54.896: W/System.err(970): at java.lang.reflect.Method.invokeNative(Native Method)
07-15 03:29:54.896: W/System.err(970): at java.lang.reflect.Method.invoke(Method.java:511)
07-15 03:29:54.906: W/System.err(970): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-15 03:29:54.926: W/System.err(970): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-15 03:29:54.926: W/System.err(970): at dalvik.system.NativeStart.main(Native Method)
[解决办法]
不要在主线程使用网络
[解决办法]
new Thread(){
public void run(){
getContent2(trurl);
}
}.start();