帮看下这段android入门程序,关于openConnection()

移动开发 码拜 7年前 (2017-04-17) 1094次浏览
package com.example.exhttpclient;
import java.io.BufferedReader;
import java.io.Closeable;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.sql.Connection;
import org.apache.http.client.HttpClient;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
	final String TAG = "ExHttpClinet";
	EditText eText;
	TextView tView;
	Button button;
	private Handler handler;
	private NetThread thread;
	class NetThread extends Thread{
		@Override
		public void run(){
			HttpURLConnection connection = null;
			try {
				URL url = new URL("http://www.baidu.com");
				connection = (HttpURLConnection) url.openConnection();
				connection.setConnectTimeout(8000);
				int code = connection.getResponseCode();
				System.out.println(code + "");
				InputStream in = connection.getInputStream();
				BufferedReader reader = new BufferedReader(new InputStreamReader(in));
				StringBuffer response = new StringBuffer();
				String line;
				while ((line = reader.readLine()) != null) {
					response.append(line);
				}
				Message lmsg = new Message();
				lmsg.obj = response;
				lmsg.what=0;
				handler.sendMessage(lmsg);
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			} finally {
				if (connection != null) {
					connection.disconnect();
				}
			}
		}
	};
	class MyHandler extends Handler{
		public void handleMessage(Message msg){
			switch (msg.what) {
			case 0:
				tView.setText(msg.obj.toString());
				break;
			default:
				break;
			}
		}
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		eText = (EditText) findViewById(R.id.address);
		tView = (TextView) findViewById(R.id.pagetext);
		button = (Button) findViewById(R.id.ButtonGo);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				thread = new NetThread();
				thread.start();
			}
		});
	}
}

错如大致在43行左右,什么东西一直是null导致错误, while循环没进。
10-18 06:50:15.470: W/System.err(4134): java.lang.NullPointerException: Attempt to invoke virtual method “boolean android.os.Handler.sendMessage(android.os.Message)” on a null object reference
10-18 06:50:15.470: W/System.err(4134):  at com.example.exhttpclient.MainActivity$NetThread.run(MainActivity.java:52)

解决方案

5

 MyHandler handler=new MyHandler();
Message lmsg = new Message();
lmsg.obj = response;
lmsg.what=0;
handler.sendMessage(lmsg);
这样就可以了

35

本人私信给你了,你看看,你换一个Url看看

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明帮看下这段android入门程序,关于openConnection()
喜欢 (0)
[1034331897@qq.com]
分享 (0)