public class MainActivity extends Activity
{
private LinearLayout ll;
private Button btngo;
private TextView tv;
private ScrollView sv ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ll = (LinearLayout) findViewById(R.id.LinearLayout1);
sv = new ScrollView(this);
tv = new TextView(this);
sv.addView(tv);
ll.addView(sv);
btngo = new Button(this);
ll.addView(btngo);
// ------------------------------------------
btngo.setText("go");
btngo.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
//需使用Thread來執行網頁的存取需求,否則會產生錯誤
new Thread(new Runnable()
{
@Override
public void run()
{
// TODO Auto-generated method stub
connectHttp();
}
}).start();
}
});
// ------------------------------------------
}
private void connectHttp()
{
String url = "https://tw.stock.yahoo.com/q/q?s=2330"; //欲存取的網頁路徑
String output = null;
HttpPost request = new HttpPost(url);
Bundle b = new Bundle();
Message msg = new Message();
// 欺騙網站是pc傳送訊息
request.addHeader("User-Agent",
"Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.1 Chrome/17.0.963.56");
List<NameValuePair> params = new ArrayList<NameValuePair>(); // 放參數
params.add(new BasicNameValuePair("s", "2330"));// 放參數
try
{
request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
HttpResponse httpResponse = new DefaultHttpClient()
.execute(request);
if (httpResponse.getStatusLine().getStatusCode() == 200)
{
output = EntityUtils.toString(httpResponse.getEntity());
b.putString("value", output);
msg.setData(b);
// tv.setText(output);
handlerGS.sendMessage(msg);
}
} catch (UnsupportedEncodingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Handler handlerGS = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
super.handleMessage(msg);
Bundle b = msg.getData() ;
tv.setText(b.getString("value"));
}
};
說明:關鍵在存取網路資訊時需使用Thread發送需求,否則會產生錯誤


沒有留言:
張貼留言