android学习之网络链接1

来源:互联网 发布:gta5美女角色捏脸数据 编辑:程序博客网 时间:2024/06/05 08:35

在网络如此发达的时代,我们需要从网络提交数据和下载数据,这里我写了通过url的get和post方法来链接网络的方式,晚一点会写一篇使用Client来连接网络的方式。

代码如下

package com.jk.httprequestdemo;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.ProtocolException;import java.net.URI;import java.net.URL;import android.os.Bundle;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.view.Menu;import android.view.View;import android.widget.ImageView;import android.widget.Toast;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }public void onMyClick(View view){//得按钮的idint id=view.getId();switch(id){case R.id.btn_get:new Thread(new Runnable() {@Overridepublic void run() {//get方法一般用来获取数据showBitmapByHttpGet();}}).start();break;case R.id.btn_post:new Thread(new Runnable() {@Overridepublic void run() {//post一般用来提交数据getResponseByHttpPost();}}).start();}}private void showBitmapByHttpGet() {try {//通过url类获得url对象URL url=new URL("http://p1.so.qhimg.com/sdr/600_900_/t01ff38d0c8b2ae6d6b.jpg");//通过url.openConnection获得HttpURLConnection的对象HttpURLConnection huc=(HttpURLConnection) url.openConnection();//设置请求的方式huc.setRequestMethod("GET");huc.connect();//获取输入流InputStream is=huc.getInputStream();//读取流的数据存入一张图片,这里为什么要用final我会在后面说,暂时没有弄懂final Bitmap bm=BitmapFactory.decodeStream(is);//因为网络操作在子线程中操作,而界面刷新需要在主线程中所以使用runOnUiThreadrunOnUiThread(new Runnable() {@Overridepublic void run() {//实例化ImageViewImageView iv=(ImageView) findViewById(R.id.img);iv.setImageBitmap(bm);}});} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}  private void getResponseByHttpPost() {try {     //创建url对象URL url=new URL("http://apistore.baidu.com/apiworks/servicedetail/697.html");    //获得httpurlconnection对象HttpURLConnection huc=(HttpURLConnection) url.openConnection();    //设置连接方式 huc.setRequestMethod("POST");//设置请求头huc.setRequestProperty("apikey", "cfc032894216b5d1c1808b4ec84fcee6");     //添加参数[post必加]huc.setDoOutput(true);//获取输出流OutputStream os=huc.getOutputStream();PrintWriter pw=new PrintWriter(os);//请求参数pw.print("version=1.0");//刷新pw.flush();//得到输入流InputStream is=huc.getInputStream();BufferedReader br=new BufferedReader(new InputStreamReader(is));final String str=br.readLine();runOnUiThread(new Runnable() {@Overridepublic void run() {//在ui界面显示数据Toast.makeText(MainActivity.this, "responst"+str, Toast.LENGTH_SHORT).show();}});     } catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (ProtocolException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
同时,在进行网络连接时,必须要记得申请网络权限

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


0 0
原创粉丝点击