android的http通信方法
package
com.hl;
002
?
?003
import
java.io.BufferedReader;
004
import
java.io.IOException;
005
import
java.io.InputStream;
006
import
java.io.InputStreamReader;
007
import
java.util.ArrayList;
008
import
java.util.HashMap;
009
import
java.util.Iterator;
010
import
java.util.Map;
011
import
java.util.Set;
012
?
?013
import
org.apache.http.HttpEntity;
014
import
org.apache.http.HttpResponse;
015
import
org.apache.http.client.entity.UrlEncodedFormEntity;
016
import
org.apache.http.client.methods.HttpPost;
017
import
org.apache.http.impl.client.DefaultHttpClient;
018
import
org.apache.http.message.BasicNameValuePair;
019
?
?020
import
android.app.Activity;
021
import
android.os.Bundle;
022
import
android.view.View;
023
import
android.view.View.OnClickListener;
024
import
android.widget.Button;
025
import
android.widget.EditText;
026
import
android.widget.TextView;
027
?
?028
public
class
SimplePOST
extends
Activity {
029
?
private
TextView show;
030
?
private
EditText txt;
031
?
private
Button btn;
032
??
?033
????
@Override
034
????
public
void
onCreate(Bundle savedInstanceState) {
035
????????
super
.onCreate(savedInstanceState);
036
????????
setContentView(R.layout.main);
037
????????
show = (TextView)findViewById(R.id.show);
038
????????
txt = (EditText)findViewById(R.id.txt);
039
????????
btn = (Button)findViewById(R.id.btn);
040
????????
btn.setOnClickListener(
new
OnClickListener() {
041
????
?042
???
@Override
043
???
public
void
onClick(View v) {
044
????
dopost(txt.getText().toString());
045
?????
?046
???
}
047
??
});
048
????
}
049
?
?050
?
private
void
dopost(String val){
051
?????
//封装数据
052
?????
Map<String, String> parmas =
new
HashMap<String, String>();
053
?????
parmas.put(
"name"
, val);
054
?????
?055
?????
DefaultHttpClient client =
new
DefaultHttpClient();
//http客户端
056
?????
HttpPost httpPost =
new
HttpPost(
"http://mhycoe.com/test/post.php"
);
057
?????
?058
?????
ArrayList<BasicNameValuePair> pairs =
new
ArrayList<BasicNameValuePair>();
059
?????
if
(parmas !=
null
){
060
?????????
Set<String> keys = parmas.keySet();
061
?????????
for
(Iterator<String> i = keys.iterator(); i.hasNext();) {
062
??????????????
String key = (String)i.next();
063
??????????????
pairs.add(
new
BasicNameValuePair(key, parmas.get(key)));
064
?????????
}
065
????
}
066
?????
?067
??
try
{
068
???
UrlEncodedFormEntity p_entity =
new
UrlEncodedFormEntity(pairs,
"utf-8"
);
069
?????????
/*
070
??????????
*? 将POST数据放入HTTP请求
071
??????????
*/
072
?????????
httpPost.setEntity(p_entity);
073
?????????
/*
074
??????????
*? 发出实际的HTTP POST请求
075
???????????
*/
076
?????????
HttpResponse response = client.execute(httpPost);
077
?????????
HttpEntity entity = response.getEntity();
078
?????????
InputStream content = entity.getContent();
079
???
String returnConnection = convertStreamToString(content);
080
?????????
show.setText(returnConnection);
081
??
}
catch
(IllegalStateException e) {
082
???
e.printStackTrace();
083
??
}
catch
(IOException e) {
084
???
e.printStackTrace();
085
??
}
086
?????
?087
?
}
088
?
?089
??
private
String convertStreamToString(InputStream is) {
090
???
BufferedReader reader =
new
BufferedReader(
new
InputStreamReader(is));
091
?????????
StringBuilder sb =
new
StringBuilder();
092
?????????
String line =
null
;
093
?????????
try
{
094
??????????????
while
((line = reader.readLine()) !=
null
) {
095
???????????????????
sb.append(line);
096
??????????????
}
097
?????????
}
catch
(IOException e) {
098
??????????????
e.printStackTrace();
099
?????????
}
finally
{
100
??????????????
try
{
101
???????????????????
is.close();
102
??????????????
}
catch
(IOException e) {
103
???????????????????
e.printStackTrace();
104
??????????????
}
105
?????????
}
106
?????????
return
sb.toString();
107
?
}
108
}
?
?
??HttpURLConnection默认使用GET方式,例如下面代码所示:
?
- //使用HttpURLConnection打开连接 ?????????????????HttpURLConnection?urlConn?=?(HttpURLConnection)?url.openConnection(); ?
- ????????????????//得到读取的内容(流) ?????????????????InputStreamReader?in?=?new?InputStreamReader(urlConn.getInputStream()); ?
- ????????????????//?为输出创建BufferedReader ?????????????????BufferedReader?buffer?=?new?BufferedReader(in); ?
- ????????????????String?inputLine?=?null; ?????????????????//使用循环来读取获得的数据 ?
- ????????????????while?(((inputLine?=?buffer.readLine())?!=?null)) ?????????????????{ ?
- ????????????????????//我们在每一行后面加上一个"\n"来换行 ?????????????????????resultData?+=?inputLine?+?"\n"; ?
- ????????????????}????????? ?????????????????//关闭InputStreamReader ?
- ????????????????in.close(); ?????????????????//关闭http连接 ?
- ????????????????urlConn.disconnect();?
如果需要使用POST方式,则需要setRequestMethod设置。代码如下:
?
2. HttpClient接口
??? 使用Apache提供的HttpClient接口同样可以进行HTTP操作。
??? 对于GET和POST请求方法的操作有所不同。GET方法的操作代码示例如下:
?
使用POST方法进行参数传递时,需要使用NameValuePair来保存要传递的参数。,另外,还需要设置所使用的字符集。代码如下所示:
?
?
??? 另外,在使用POST方式进行传输时,需要进行字符编码。
本文出自 “我的Android开发志” 博客,请务必保留此出处http://52android.blog.51cto.com/2554429/496621
??
?