首先写一个工具类HttpConnection

package com.example.pc.httpconnectiontest;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;/*** Created by pc on 2016/4/18.* <p/>* 工具类*/
public class HttpConnectionUtil {public static String getHttpContent(String url) {return getHttpContent(url, "UTF-8");}private static String getHttpContent(String url, String charSet) {HttpURLConnection connection = null;String content = "";try {URL address_url = new URL(url);connection = (HttpURLConnection) address_url.openConnection();connection.setRequestMethod("GET");//设置访问超时时间及读取网页流的超市时间,毫秒值connection.setConnectTimeout(1000);connection.setReadTimeout(1000);//得到访问页面的返回值int response_code = connection.getResponseCode();if (response_code == HttpURLConnection.HTTP_OK) {InputStream inputStream = connection.getInputStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, charSet));//把字节流读取出来String line = "";while ((line = bufferedReader.readLine()) != null) {content += line;}return content;}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (connection != null) {connection.disconnect();}}return "";}// 添加post请求public static String getHttpContent2() {try {//            URL url2 = new URL("你请求的post参数前面的网址");URL url2 = new URL("http://fanyi.youdao.com/openapi.do");HttpURLConnection connection = (HttpURLConnection) url2.openConnection();//设置 编码方式 (可以)输入输出 以及请求的方法connection.addRequestProperty("encoding","UTF-8");connection.setDoInput(true);connection.setDoOutput(true);connection.setRequestMethod("POST");OutputStream os = connection.getOutputStream();//把字节流转换为字符流OutputStreamWriter osw = new OutputStreamWriter(os);BufferedWriter bw = new BufferedWriter(osw);//            bw.write("你请求的post参数");bw.write("keyfrom=zhanghappyzq&key=301249901&type=data&doctype=xml&version=1.1&q=congratulation");bw.flush();InputStream is = connection.getInputStream();InputStreamReader isr = new InputStreamReader(is);BufferedReader br = new BufferedReader(isr);String line;StringBuilder stringBuilder = new StringBuilder();while ((line = br.readLine()) != null) {stringBuilder.append(line);}bw.close();osw.close();os.close();br.close();isr.close();is.close();System.out.println(stringBuilder.toString());return stringBuilder.toString();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "";}}

然后在MainActivity中显示出来,在MainActivity中用到 Handler

package com.example.pc.httpconnectiontest;import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;import java.io.IOException;public class MainActivity extends AppCompatActivity {private String content;private String str_noBuf;private String str_Buf;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button = (Button) findViewById(R.id.button);Button button2 = (Button) findViewById(R.id.button2);Button button3 = (Button) findViewById(R.id.button3);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new Runnable() {@Overridepublic void run() {//网络Connection请求方面
//                        content = HttpConnectionUtil.getHttpContent("http://www.baidu.com");content = HttpConnectionUtil.getHttpContent2();if (content != null && content != "") {Message message = mhandler.obtainMessage();message.what = 1;message.obj = "";mhandler.sendMessage(message);}}}).start();}});button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new Runnable() {@Overridepublic void run() {//InputStreamReaderTest nobuftry {str_noBuf = InputStreamReaderTest.transReadNoBuf();Log.d("MainActivity","str_noBuf?");} catch (IOException e) {e.printStackTrace();}if (str_noBuf != null && str_noBuf != "") {Message message = mhandler.obtainMessage();message.what = 2;mhandler.sendMessage(message);}Log.d("MainActivity","str_noBuf=="+str_noBuf);}}).start();}});button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {new Thread(new Runnable() {@Overridepublic void run() {//InputStreamReaderTest buftry {str_Buf = InputStreamReaderTest.transReadNoBuf();} catch (IOException e) {e.printStackTrace();}if (str_Buf != null && str_Buf != "") {Message message = mhandler.obtainMessage();message.what = 3;mhandler.sendMessage(message);}}}).start();}});}private Handler mhandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 1:Toast.makeText(MainActivity.this, content, Toast.LENGTH_LONG).show();Log.d("MainActivity", content);break;case 2:Toast.makeText(MainActivity.this, str_noBuf, Toast.LENGTH_LONG).show();Log.d("MainActivity", str_noBuf);break;case 3:Toast.makeText(MainActivity.this, str_Buf, Toast.LENGTH_LONG).show();Log.d("MainActivity", str_Buf);break;default:break;}}};}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:fitsSystemWindows="true"android:orientation="vertical"tools:context=".MainActivity"><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button1"android:id="@+id/button" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button2"android:id="@+id/button2" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button3"android:id="@+id/button3" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.pc.httpconnectiontest" ><uses-permission android:name="android.permission.INTERNET"/><!--往sdcard中写入数据的权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><!--在sdcard中创建/删除文件的权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme" ><activityandroid:name=".MainActivity"android:label="@string/app_name"android:theme="@style/AppTheme.NoActionBar" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>

出现的错误以及解决方案:

一般形如:Unable to resolve host "www.xxxx.com" : No address associated with hostname

碰到这个问题是在android系统中。

检测如下几点:

1. 浏览器使用了proxy,但是你的app没有。设置

[java] view plain copy  print?
  1. System.setProperty("http.proxyHost", "my.proxyhost.com");
  2. System.setProperty("http.proxyPort", "1234");

2. 浏览器可以访问网络,但是app不行?

3. 是不是SSL的原因。

自己的遇到这个问题,最终发现是app的网络设置有问题,改正后,就可以连接网络了

thanks  for    http://blog.csdn.net/cctt_1/article/details/8595791.

另外为什么不用 Message message = new Message(); 而用  Message message =mhandler.obtainMessage();

通过比较我们会发现,这两种获取Message的实例的方法不一样,于是我看了源码,果然不一样:
查看obtainMessage()源码:
图1:
进入obtain方法:
图2:
再进入objtain方法:
图3:
进入Message方法:
图4:
总结:
上面的图3中obtain方法的注释中说得很明白:从整个Messge池中返回一个新的Message实例,在许多情况下使用它,因为它能避免分配新的对象
如果是这样的话,那么通过调用obtainMessage方法获取Message对象就能避免创建对象,从而减少内存的开销。

对HTTPCONNECTION的理解相关推荐

  1. [翻译]深入理解Tornado——一个异步web服务器

    本人的第一次翻译,转载请注明出处:http://www.cnblogs.com/yiwenshengmei/archive/2011/06/08/understanding_tornado.html ...

  2. 深入理解异步Web服务器 Tornado

    这篇文章的目的在于对Tornado这个异步服务器软件的底层进行一番探索.我采用自底向上的方式进行介绍,从轮训开始,向上一直到应用层,指出我认为有趣的部分. 所以,如果你有打算要阅读Tornado这个w ...

  3. [转载]理解PYTHON中的装饰器

    [翻译]理解PYTHON中的装饰器 来源stackoverflow上的问题 链接 python的函数是对象 要理解装饰器,首先,你必须明白,在python中,函数是对象. 这很重要. 简单例子来理解为 ...

  4. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

  5. stream流对象的理解及使用

    我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...

  6. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  7. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  8. 智能文档理解:通用文档预训练模型

    预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...

  9. 熵,交叉熵,散度理解较为清晰

    20210511 https://blog.csdn.net/qq_35455503/article/details/105714287 交叉熵和散度 自己给自己编码肯定是最小的 其他的编码都会比这个 ...

最新文章

  1. Tidio AI 趋势报告:约42%受访者能够接受机器人伴侣
  2. Linux C中内联汇编的语法格式及使用方法
  3. leetcode(34)在排序数组中查找元素的第一个和最后一个位置
  4. 一个小例子搞懂redux的套路
  5. SSRF(服务端请求伪造)原理/防御
  6. 02.XMemcached的使用
  7. 取值方法_函数的定义域和参数的取值范围详解
  8. 对ttl和cmos电路的理解
  9. 深入理解JVM——JVM性能调优实战
  10. 网线制作ppt_ppt模板网线
  11. 你必备的39个大数据可视化工具
  12. 苹果微信分身版ios_苹果ios微信分身多开双开助手免费版
  13. 时间管理:良好的状态是解决重要不紧急的事,而不是陷入重要且紧急的事情中出不来
  14. 微信开发者模式demo
  15. 【Pygame实战】强烈推荐:教你用百行代码编写一款《小蜜蜂历险记》不信?来看看(玩儿嗨了~)
  16. 在Markdown文件中快速插入本地图片
  17. Bootstrap按钮样式
  18. python语言编程:itertools.product的简介、使用方法(求笛卡尔积等)之详细攻略
  19. 爬虫-模拟点击,实现加载页面全部内容
  20. mysql-索引和锁(何登成的分享转载)

热门文章

  1. 容器安全 - 利用特权模式运行的容器,实现容器逃逸和入侵
  2. 如何在C#中使用反射获取集合元素类型
  3. adprw指令通讯案例_超实用,非常典型的Modbus通讯项目案例,三分钟学会
  4. 尝试引用非结构体数组的字段_剖析PHP底层数组是如何实现的
  5. js原生实现贪吃蛇(解决连续键盘事件)
  6. python解析器原理_Python程序运行原理图文解析
  7. python实用黑客脚本_Python黑客攻防(十六)编写Dos脚本,进行容易攻击演示
  8. vue监听路由的变化,跳转到同一个页面时,Url改变但视图未重新加载问题
  9. java.io.IOException: Could not find my address
  10. 轮播中小按钮的切换和高亮效果