/**
* 使用HTTP的Get方式进行数据请求
*/
protected void httpGet() {
/**
* 进行异步请求
*/
new AsyncTask<String, Void, Void>() { @Override
protected Void doInBackground(String... params) {
System.err.println("httpGet start");
// 在此方法中只能进行数据处理,不能与进行UI交互
try {
URL url = new URL(params[0]);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
// 使用UTF-8的方式进行数据流转化,从字节流转化为字符流
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.err.println(line);
}
// 关闭数据流
br.close();
isr.close();
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}.execute("http://fanyi.youdao.com/openapi.do?keyfrom=***&key=***&type=data&doctype=json&version=1.1&q=good");
} /**
* 使用HTTP的Post方式进行数据请求
*/
protected void httpPost() {
/**
* 进行异步请求
*/
new AsyncTask<String, Void, Void>() { @Override
protected Void doInBackground(String... params) {
System.err.println("httpPost start");
// 在此方法中只能进行数据处理,不能与进行UI交互
try {
URL url = new URL(params[0]);
HttpURLConnection connection = (HttpURLConnection) url
.openConnection();
// 设置请求方式以及设置参数 // 设置是否向HttpURLConnection对象输出
connection.setDoOutput(true);
// 设置请求方式
connection.setRequestMethod("POST"); // 设置参数
OutputStream os = connection.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
bw.write(params[1]);
bw.flush(); InputStream is = connection.getInputStream();
// 使用UTF-8的方式进行数据流转化,从字节流转化为字符流
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
BufferedReader br = new BufferedReader(isr);
String line = null;
while ((line = br.readLine()) != null) {
System.err.println(line);
}
// 关闭数据流
br.close();
isr.close();
is.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}.execute("http://fanyi.youdao.com/openapi.do",
"keyfrom=***&key=***&type=data&doctype=json&version=1.1&q=good"); } private HttpClient httpClient; /**
* 使用HttpClient进行Get请求
*/
protected void httpClientGet() {
new AsyncTask<String, Void, Void>() { @Override
protected Void doInBackground(String... params) {
System.err.println("httpClientGet start");
String urlString = params[0];
HttpGet httpGet = new HttpGet(urlString);
try {
// 发送请求
HttpResponse response = httpClient.execute(httpGet);
// 获取返回内容
String value = EntityUtils.toString(response.getEntity());
System.err.println(value);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}.execute("http://fanyi.youdao.com/openapi.do?keyfrom=***&key=***&type=data&doctype=json&version=1.1&q=good");
} /**
* 使用HttpClient进行Post请求
*/
protected void httpClientPost() {
new AsyncTask<String, Void, Void>() { @Override
protected Void doInBackground(String... params) {
System.err.println("httpClientPost start");
String urlString = params[0];
HttpPost httpPost = new HttpPost(urlString);
try {
// 设置参数
String[] paramsArr = params[1].split("&");
int len = paramsArr.length;
List<BasicNameValuePair> list = new ArrayList<BasicNameValuePair>(
len);
BasicNameValuePair pair = null;
for (int i = 0; i < len; i++) {
String[] paramArr = paramsArr[i].split("=");
pair = new BasicNameValuePair(paramArr[0], paramArr[1]);
list.add(pair);
}
httpPost.setEntity(new UrlEncodedFormEntity(list));
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} try {
// 发送请求
HttpResponse response = httpClient.execute(httpPost);
// 获取返回内容
String value = EntityUtils.toString(response.getEntity());
System.err.println(value);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}.execute("http://fanyi.youdao.com/openapi.do",
"keyfrom=***&key=***&type=data&doctype=json&version=1.1&q=good");
}

截图:

Android中使用HTTP和HttpClient进行通信的更多相关文章

  1. Android中两个Activity之间简单通信

    在Android中,一个界面被称为一个activity,在两个界面之间通信,采用的是使用一个中间传话者(即Intent类)的模式,而不是直接通信. 下面演示如何实现两个activity之间的通信. 信 ...

  2. Android中Service和Activity之间的通信

    启动Service并传递数据进去: Android中通过Intent来启动服务会传递一个Intent过去. 可以在Intent中通过putExtra()携带数据 Intent startIntent ...

  3. Android中BroadCast与Activity之间的通信

    在看本文之前,假设你对于Android的广播机制不是非常了解.建议先行阅读我转载的一篇博文:图解 Android 广播机制. 因为本案例比較简单,故直接在此贴出代码,不做过多的阐述. 先上效果截图: ...

  4. Android中Service与多个Activity通信

    由于项目需要,我们有时候需要在service中处理耗时操作,然后将结果发送给activity以更新状态.通常情况下,我们只需要在一个service与一个activity之间通信,通常这种情况下,我们使 ...

  5. android中的HttpURLConnection和HttpClient实现app与pc数据交互

    自学android的这几天很辛苦,但是很满足,因为每当学到一点点知识点都会觉得很开心,觉得今天是特别有意义的,可能这个就是一种莫名的热爱吧. 下面来说说今天学习的HttpURLConnection和H ...

  6. Android中的常见通信机制和Linux中的通信机制

    Handler Handler是Android系统中的一种消息传递机制,起作用是应对多线程场景.将A进程的消息传递给B线程,实现异步消息处理.很多情况是将工作线程中需要更新UI的操作消息传递给UI主线 ...

  7. Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解

    Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...

  8. android 中的Http请求类HttpUrlConnection和HttpClient类

    Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient. 如何选择这两个类的使用:android-developers.blogspot.com/2011 ...

  9. 网络相关系列之中的一个:Android中使用HttpClient发送HTTP请求

    一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 "超文本传输协议",是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议,是 ...

随机推荐

  1. MyEclipse中新建html5中文乱码

    近期刚开始入门html5 和 javascript 用MyEclipse2104创建html5时,遇到浏览器显示中文乱码的问题 [MyEclipse中设置的html5,jsp编码都采用的UTF-8] ...

  2. 重拾C,一天一点点_5

    switch(表达式){    case 整型常量表达式:语句序列    case 整型常量表达式:语句序列    default:语句序列} while(表达式)    语句 for(表达式1; 表 ...

  3. Mac开发利器之程序员编辑器MacVim学习总结

    Emacs和Vim都是程序员专用编辑器,Emacs被称为神的编辑器,Vim则是编辑器之神.至于两者到底哪个更好用,网络上两大派系至今还争论不休.不过,相比之下,Emacs更加复杂,已经不能算是一个编辑 ...

  4. linux c 实现大数相乘

      #include <stdio.h> #include <string.h> #include <math.h> #include <stdbool.h& ...

  5. Eclipse 常用插件

    /* ===================== Eclipse Color Theme 语法高亮 ======================== */ 安装方法同上,软件安装URL http:// ...

  6. MyEclipse反编译Class文件

    对于需要查看Java Class文件源码的筒子们来说,必须在项目中导入Java源码才能查看Class文件的具体实现,这不仅十分的麻烦,因为有时我们并不可以获得Class文件对应的Java源码.今天就给 ...

  7. gcc编译出现的问题

    /usr/include/c++/4.8/bits/c++0x_warning.h:32:2: error: #error 解决办法:g++ -std=c++11

  8. C预处理,条件编译

    预处理是指在编译器之前运行,常以“#”开头 包含3个方面的内容: 1)宏定义与宏替换 2)文件包含 3)条件编译 宏定义与宏替换: 宏名一般大写,替换发生在编译之前,且是机械替换,不做语法检查,也不分 ...

  9. windows环境下MySQL重启的命令行说明

    ctrl+r 弹出运行框,输入cmd,然后再控制太输入命令: 1.点击“开始”->“运行”(快捷键Win+R). 2.停止:输入 net stop mysql 3.启动:输入 net start ...

  10. c#之委托和事件的区别

    1.什么是委托,这里就不做介绍了,如果想了解可以查看博客:http://www.cnblogs.com/xiaoxiaogogo/p/3571494.html 下面开始对事件进行介绍 1.定义事件以及 ...