当前位置:  编程技术>移动开发

android使用url connection示例(get和post数据获取返回数据)

    来源: 互联网  发布时间:2014-10-22

    本文导语:  一定要加上对Sd卡读写文件的权限声明,以及访问网络的权限 代码如下: get /post 工具 代码如下:package com.act262.whpj.utils; import java.io.BufferedReader;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;impor...

一定要加上对Sd卡读写文件的权限声明,以及访问网络的权限

代码如下:




get /post 工具

代码如下:

package com.act262.whpj.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;

import android.os.Environment;
import android.util.PrintStreamPrinter;

/**
 * 用于get或者post数据
 */
public class GetPostUtil {
    public static final String TAG = "GetPostUtil Debug";

    /**
     * @param url
     *            传入的url,包括了查询参数
     * @return 返回get后的数据
     */
    public static String sendGet(String url) {
        String result = "";
        // String
        URL realURL = null;
        URLConnection conn = null;
        BufferedReader bufReader = null;
        String line = "";
        try {
            realURL = new URL(/tech-mobile-dev/url/index.html);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("url 格式错误");
        }

        try {
            conn = realURL.openConnection();
            // 设置连接参数...conn.setRequestProperty("xx", "xx");

            conn.setConnectTimeout(10000); // 10s timeout
            // conn.setRequestProperty("accept", "*/*");
            // conn.setRequestProperty("", "");

            conn.connect(); // 连接就把参数送出去了 get方法

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("连接错误");
        }

        try {
            bufReader = new BufferedReader(new InputStreamReader(
                    conn.getInputStream(), "gb2312"));

            while ((line = bufReader.readLine()) != null) {
                result += line + "n";
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println("读取数据错误");
        } finally {
            // 释放资源
            if (bufReader != null) {
                try {
                    bufReader.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

        return result;
    }

    /**
     * @param url
     * @param param
     *            查询参数 ,形式如 name=xx&age=xx&sex=xx
     * @return
     */
    public static String sendGet(String url, String param) {
        return sendGet(url + "?" + param);
    }

    /**
     * @param url
     *            指定的url,不包括查询参数
     * @param param
     *            查询参数 形式如 name=xx&age=xx&sex=xx
     * @return 返回post后的数据
     */
    public static String sendPost(String url, String param) {
        String result = "";
        URL realURL = null;
        BufferedReader bufReader = null;
        // PrintWriter printWriter = null;
        PrintStreamPrinter out = null;
        URLConnection connection = null;
        String line = "";
        try {
            realURL = new URL(/tech-mobile-dev/url/index.html);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            connection = realURL.openConnection();
            // 设置为可输入输出 post的模式,而且在输出之前不能获取输入的数据,否则报错
            connection.setDoOutput(true);
            connection.setDoOutput(true);

            // 已经连接了,所以不能再用connect(),否则报错的

            out = new PrintStreamPrinter(new PrintStream(
                    connection.getOutputStream()));
            out.println(param);
            //
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            bufReader = new BufferedReader(new InputStreamReader(
                    connection.getInputStream(), "gb2312"));
            while ((line = bufReader.readLine()) != null) {
                result += line + "n";
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            // 释放资源
            try {
                if (bufReader != null) {
                    bufReader.close();
                }
                if (out != null) {
                    //
                }
            } catch (IOException e2) {
                // TODO: handle exception
            }

        }
        return result;
    }

    public static void saveFile(String content) {

        File file = new File(Environment.getExternalStorageDirectory()
                .getAbsolutePath(), "file.html");
        if (!file.exists()) {
            try {
                boolean status = file.createNewFile();

                System.out.println("is create new file :" + status);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        PrintWriter pw = null;
        try {
            FileWriter fw = new FileWriter(file);
            // pw = new PrintWriter(new Date() + ".html");
            // pw.println(content);

            fw.write(content);
            fw.flush();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            if (pw != null) {
                pw.close();
            }
        }
    }

}

测试类

代码如下:

package com.act262.whpj.ui;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.act262.whpj.R;
import com.act262.whpj.utils.GetPostUtil;

public class StartActivity extends Activity {

    Button get, post;
    TextView showTextView;
    Handler handler;
    String result = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_start);
        get = (Button) findViewById(R.id.get);
        post = (Button) findViewById(R.id.post);
        showTextView = (TextView) findViewById(R.id.show);
        handler = new Handler() {
            public void handleMessage(Message msg) {
                if (msg.what == 0x123) {
                    showTextView.setText(result);
                }
            }
        };
        post.setOnClickListener(new ButtonListener());
        get.setOnClickListener(new ButtonListener());
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.start, menu);
        return true;
    }

    class ButtonListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.get:

                new Thread() {

                    public void run() {
                        result = GetPostUtil
                                .sendGet("http://www.baidu.com");
                        handler.sendEmptyMessage(0x123);// 通知UI线程更新界面
                        // Log.d(GetPostUtil.TAG, result);
                        System.out.println(result);
                        GetPostUtil.saveFile(result);
                    }
                }.start();
                showTextView.setText(result);
                break;
            case R.id.post:
                new Thread() {
                    public void run() {
                        result = GetPostUtil
                                .sendPost(
                                        "http://www.baidu.com",
                                        "null");
                        handler.sendEmptyMessage(0x123);// 通知UI线程更新界面
                        Log.d(GetPostUtil.TAG, result);
                    }
                }.start();
                showTextView.setText(result);
                break;
            default:
                break;
            }
        }
    }
}


    
 
 

您可能感兴趣的文章:

  • Android 元数据读取实用库 android-metadata
  • android开发教程之清除android数据缓存示例(清除本地数据缓存)
  • Android数据库加密SDK
  • 安装时加入外部数据库示例(android外部数据库)
  • Android 实现永久保存数据的方法详解
  • android实现关闭或开启移动网络数据
  • Android实现将已发送的短信写入短信数据库的方法
  • android读写sd卡操作写入数据读取数据示例
  • Android获取assets文件夹中的数据并写入SD卡示例
  • 解析Android中string-array数据源的简单使用
  • Android 清除SharedPreferences 产生的数据(实例代码)
  • android通过gps获取定位的位置数据和gps经纬度
  • android实现raw文件夹导入数据库代码
  • Android数据绑定框架 RoboBinding
  • Android学习笔记--通过Application传递数据代码示例
  • Android访问php取回json数据实例
  • android不同activity之间共享数据解决方法
  • Android TableLayout数据列表的回显清空实现思路及代码
  • Android webview与js交换JSON对象数据示例
  • android POST数据遇到的UTF-8编码(乱码)问题解决办法
  • Android开发:TextView加入滚动条示例
  • android开发教程之switch控件使用示例
  • android开启免提切换功能示例
  • Android开发之注册登录方法示例
  • 手写android布局示例
  • Android示例程序 apps-for-android
  • android网络编程之android连接网络的简单示例代码
  • android获取当前手机号示例程序
  • android读取assets文件示例
  • android读取raw文件示例
  • android实现来电静音示例(监听来电)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Facebook Connect for Android
  • 深入android中The connection to adb is down的问题以及解决方法
  • android-wifi-connecter
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍
  • Android 开发环境 Android Studio
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法
  • Android 2D游戏引擎 Android Angle


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3