这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开。
先贴代码:

​​01​​
​​public​​​ ​​class​​​ ​​Activity1 ​​​​extends​​​ ​​Activity {​​


​​02​​



​​03​​
​​private​​​ ​​final​​​ ​​String DEBUG_TAG = ​​​​"System.out"​​​​;​​


​​04​​



​​05​​
​​private​​​ ​​TextView mTextView;​​


​​06​​
​​private​​​ ​​Button mButton;​​


​​07​​



​​08​​
​​protected​​​ ​​void​​​ ​​onCreate(Bundle savedInstanceState) {​​


​​09​​
​​super​​​​.onCreate(savedInstanceState);​​


​​10​​
​​setContentView(R.layout.main);​​


​​11​​



​​12​​
​​mTextView = (TextView) findViewById(R.id.TextView01);​​


​​13​​
​​mButton = (Button) findViewById(R.id.Button01);​​


​​14​​
​​mButton.setOnClickListener(​​​​new​​​ ​​httpListener());​​


​​15​​
​​}​​


​​16​​



​​17​​
​​// 设置按钮监听器​​


​​18​​
​​class​​​ ​​httpListener ​​​​implements​​​ ​​OnClickListener {​​


​​19​​
​​public​​​ ​​void​​​ ​​onClick(View v) {​​


​​20​​
​​refresh();​​


​​21​​
​​}​​


​​22​​
​​}​​


​​23​​



​​24​​
​​private​​​ ​​void​​​ ​​refresh() {​​


​​25​​
​​String httpUrl = ​​​​"http://192.168.0.101:8080/Test/test.jsp"​​​​;​​


​​26​​
​​// URL可以加参数​​


​​27​​
​​// String httpUrl =​​


​​28​​
​​// "http://192.168.0.101:8080/Test/test.jsp?par=abcdefg";​​


​​29​​
​​String resultData = ​​​​""​​​​;​​


​​30​​
​​URL url = ​​​​null​​​​;​​


​​31​​
​​try​​​ ​​{​​


​​32​​
​​// 创建一个URL对象​​


​​33​​
​​url = ​​​​new​​​ ​​URL(httpUrl);​​


​​34​​
​​} ​​​​catch​​​ ​​(MalformedURLException e) {​​


​​35​​
​​Log.d(DEBUG_TAG, ​​​​"create URL Exception"​​​​);​​


​​36​​
​​}​​


​​37​​
​​// 声明HttpURLConnection对象​​


​​38​​
​​HttpURLConnection urlConn = ​​​​null​​​​;​​


​​39​​
​​// 声明InputStreamReader对象​​


​​40​​
​​InputStreamReader in = ​​​​null​​​​;​​


​​41​​
​​// 声明BufferedReader对象​​


​​42​​
​​BufferedReader buffer = ​​​​null​​​​;​​


​​43​​
​​String inputLine = ​​​​null​​​​;​​


​​44​​
​​if​​​ ​​(url != ​​​​null​​​​) {​​


​​45​​
​​try​​​ ​​{​​


​​46​​
​​// 使用HttpURLConnection打开连接​​


​​47​​
​​urlConn = (HttpURLConnection) url.openConnection();​​


​​48​​
​​// 得到读取的内容(流)​​


​​49​​
​​in = ​​​​new​​​ ​​InputStreamReader(urlConn.getInputStream());​​


​​50​​
​​// 创建BufferReader对象,输出时候用到​​


​​51​​
​​buffer = ​​​​new​​​ ​​BufferedReader(in);​​


​​52​​
​​// 使用循环来读取数据​​


​​53​​
​​while​​​ ​​((inputLine = buffer.readLine()) != ​​​​null​​​​) {​​


​​54​​
​​// 在每一行后面加上换行​​


​​55​​
​​resultData += inputLine + ​​​​"\n"​​​​;​​


​​56​​
​​}​​


​​57​​
​​// 设置显示取的的内容​​


​​58​​
​​if​​​ ​​(resultData != ​​​​null​​​ ​​&& !resultData.equals(​​​​""​​​​)) {​​


​​59​​
​​mTextView.setText(resultData);​​


​​60​​
​​} ​​​​else​​​ ​​{​​


​​61​​
​​mTextView.setText(​​​​"读取的内容为空"​​​​);​​


​​62​​
​​}​​


​​63​​
​​} ​​​​catch​​​ ​​(IOException e) {​​


​​64​​
​​e.printStackTrace();​​


​​65​​
​​} ​​​​finally​​​ ​​{​​


​​66​​
​​try​​​ ​​{​​


​​67​​
​​// 关闭InputStreamReader​​


​​68​​
​​in.close();​​


​​69​​
​​// 关闭URL连接​​


​​70​​
​​urlConn.disconnect();​​


​​71​​
​​} ​​​​catch​​​ ​​(IOException e) {​​


​​72​​
​​e.printStackTrace();​​


​​73​​
​​}​​


​​74​​
​​}​​


​​75​​
​​} ​​​​else​​​ ​​{​​


​​76​​
​​Log.d(DEBUG_TAG, ​​​​"URL is NULL"​​​​);​​


​​77​​
​​}​​


​​78​​
​​}​​


​​79​​
​​}​​


第二种方式:

​​001​​
​​public​​​ ​​class​​​ ​​Activity2 ​​​​extends​​​ ​​Activity {​​


​​002​​



​​003​​
​​private​​​ ​​final​​​ ​​String DEBUG_TAG = ​​​​"System.out"​​​​;​​


​​004​​



​​005​​
​​private​​​ ​​TextView mTextView;​​


​​006​​
​​private​​​ ​​Button mButton;​​


​​007​​



​​008​​
​​protected​​​ ​​void​​​ ​​onCreate(Bundle savedInstanceState) {​​


​​009​​
​​super​​​​.onCreate(savedInstanceState);​​


​​010​​
​​setContentView(R.layout.main);​​


​​011​​



​​012​​
​​mTextView = (TextView) findViewById(R.id.TextView01);​​


​​013​​
​​mButton = (Button) findViewById(R.id.Button01);​​


​​014​​
​​mButton.setOnClickListener(​​​​new​​​ ​​httpListener());​​


​​015​​
​​}​​


​​016​​



​​017​​
​​// 设置按钮监听器​​


​​018​​
​​class​​​ ​​httpListener ​​​​implements​​​ ​​OnClickListener {​​


​​019​​
​​public​​​ ​​void​​​ ​​onClick(View v) {​​


​​020​​
​​refresh();​​


​​021​​
​​}​​


​​022​​
​​}​​


​​023​​



​​024​​
​​private​​​ ​​void​​​ ​​refresh() {​​


​​025​​
​​String httpUrl = ​​​​"http://192.168.0.101:8080/Test/test.jsp"​​​​;​​


​​026​​
​​String resultData = ​​​​""​​​​;​​


​​027​​
​​URL url = ​​​​null​​​​;​​


​​028​​
​​try​​​ ​​{​​


​​029​​
​​// 创建一个URL对象​​


​​030​​
​​url = ​​​​new​​​ ​​URL(httpUrl);​​


​​031​​
​​} ​​​​catch​​​ ​​(MalformedURLException e) {​​


​​032​​
​​Log.d(DEBUG_TAG, ​​​​"create URL Exception"​​​​);​​


​​033​​
​​}​​


​​034​​
​​// 声明HttpURLConnection对象​​


​​035​​
​​HttpURLConnection urlConn = ​​​​null​​​​;​​


​​036​​
​​// 声明InputStreamReader对象​​


​​037​​
​​InputStreamReader in = ​​​​null​​​​;​​


​​038​​
​​// 声明BufferedReader对象​​


​​039​​
​​BufferedReader buffer = ​​​​null​​​​;​​


​​040​​
​​String inputLine = ​​​​null​​​​;​​


​​041​​
​​// 声明DataOutputStream流​​


​​042​​
​​DataOutputStream out = ​​​​null​​​​;​​


​​043​​
​​if​​​ ​​(url != ​​​​null​​​​) {​​


​​044​​
​​try​​​ ​​{​​


​​045​​
​​// 使用HttpURLConnection打开连接​​


​​046​​
​​urlConn = (HttpURLConnection) url.openConnection();​​


​​047​​
​​// 因为这个是POST请求所以要设置为true​​


​​048​​
​​urlConn.setDoInput(​​​​true​​​​);​​


​​049​​
​​urlConn.setDoOutput(​​​​true​​​​);​​


​​050​​
​​// 设置POST方式​​


​​051​​
​​urlConn.setRequestMethod(​​​​"POST"​​​​);​​


​​052​​
​​// POST请求不能设置缓存​​


​​053​​
​​urlConn.setUseCaches(​​​​false​​​​);​​


​​054​​
​​urlConn.setInstanceFollowRedirects(​​​​false​​​​);​​


​​055​​
​​// 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的​​


​​056​​
​​urlConn.setRequestProperty(​​​​"Content-Type"​​​​,​​​​"application/x-www-form-urlencoded"​​​​);​​


​​057​​
​​// 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成​​


​​058​​
​​// 要注意的是connectio.getOutputStream会隐含的进行connect​​


​​059​​
​​urlConn.connect();​​


​​060​​
​​// DataOutputStream流​​


​​061​​
​​out = ​​​​new​​​ ​​DataOutputStream(urlConn.getOutputStream());​​


​​062​​
​​String content = ​​​​"par="​​​ ​​+ URLEncoder.encode(​​​​"abcdefg"​​​​, ​​​​"gb2312"​​​​);​​


​​063​​
​​// 将要上传的内容写入流中​​


​​064​​
​​out.writeBytes(content);​​


​​065​​
​​// 得到读取的内容(流)​​


​​066​​
​​in = ​​​​new​​​ ​​InputStreamReader(urlConn.getInputStream());​​


​​067​​
​​// 创建BufferReader对象,输出时候用到​​


​​068​​
​​buffer = ​​​​new​​​ ​​BufferedReader(in);​​


​​069​​
​​// 使用循环来读取数据​​


​​070​​
​​while​​​ ​​((inputLine = buffer.readLine()) != ​​​​null​​​​) {​​


​​071​​
​​// 在每一行后面加上换行​​


​​072​​
​​resultData += inputLine + ​​​​"\n"​​​​;​​


​​073​​
​​}​​


​​074​​
​​// 设置显示取的的内容​​


​​075​​
​​if​​​ ​​(resultData != ​​​​null​​​ ​​&& !resultData.equals(​​​​""​​​​)) {​​


​​076​​
​​mTextView.setText(resultData);​​


​​077​​
​​} ​​​​else​​​ ​​{​​


​​078​​
​​mTextView.setText(​​​​"读取的内容为空"​​​​);​​


​​079​​
​​}​​


​​080​​
​​} ​​​​catch​​​ ​​(IOException e) {​​


​​081​​
​​e.printStackTrace();​​


​​082​​
​​} ​​​​finally​​​ ​​{​​


​​083​​
​​try​​​ ​​{​​


​​084​​
​​// 刷新DataOutputStream流​​


​​085​​
​​out.flush();​​


​​086​​
​​// 关闭DataOutputStream流​​


​​087​​
​​out.close();​​


​​088​​
​​// 关闭InputStreamReader​​


​​089​​
​​in.close();​​


​​090​​
​​// 关闭URL连接​​


​​091​​
​​urlConn.disconnect();​​


​​092​​
​​} ​​​​catch​​​ ​​(IOException e) {​​


​​093​​
​​e.printStackTrace();​​


​​094​​
​​}​​


​​095​​
​​}​​


​​096​​
​​} ​​​​else​​​ ​​{​​


​​097​​
​​Log.d(DEBUG_TAG, ​​​​"URL is NULL"​​​​);​​


​​098​​
​​}​​


​​099​​
​​}​​


​​100​​
​​}​​


第三种方式

​​01​​
​​public​​​ ​​class​​​ ​​Activity3 ​​​​extends​​​ ​​Activity{​​


​​02​​
​​private​​​ ​​TextView mTextView;​​


​​03​​
​​private​​​ ​​Button mButton;​​


​​04​​



​​05​​
​​protected​​​ ​​void​​​ ​​onCreate(Bundle savedInstanceState) {​​


​​06​​
​​super​​​​.onCreate(savedInstanceState);​​


​​07​​
​​setContentView(R.layout.main);​​


​​08​​
​​mTextView = (TextView) findViewById(R.id.TextView01);​​


​​09​​
​​mButton = (Button) findViewById(R.id.Button01);​​


​​10​​
​​mButton.setOnClickListener(​​​​new​​​ ​​httpListener());​​


​​11​​
​​}​​


​​12​​



​​13​​
​​// 设置按钮监听器​​


​​14​​
​​class​​​ ​​httpListener ​​​​implements​​​ ​​OnClickListener {​​


​​15​​
​​public​​​ ​​void​​​ ​​onClick(View v) {​​


​​16​​
​​String httpUrl = ​​​​"http://192.168.0.101:8080/Test/test.jsp?par=HttpClient_android_Get"​​​​;​​


​​17​​
​​// HttpGet连接对象​​


​​18​​
​​HttpGet httpRequest = ​​​​new​​​ ​​HttpGet(httpUrl);​​


​​19​​
​​try​​​ ​​{​​


​​20​​
​​// 取的HttpClient对象​​


​​21​​
​​HttpClient httpclient = ​​​​new​​​ ​​DefaultHttpClient();​​


​​22​​
​​// 请求HttpClient,取的HttpResponse​​


​​23​​
​​HttpResponse httpResponse = httpclient.execute(httpRequest);​​


​​24​​
​​// 请求成功​​


​​25​​
​​if​​​ ​​(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {​​


​​26​​
​​// 取的返回的字符串​​


​​27​​
​​String strResult = EntityUtils.toString(httpResponse.getEntity());​​


​​28​​
​​// 这个返回值可能会在行尾出现小方格​​


​​29​​
​​// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。​​


​​30​​
​​String strsResult = strResult.replace(​​​​"\r"​​​​, ​​​​""​​​​);​​


​​31​​
​​mTextView.setText(strsResult);​​


​​32​​
​​} ​​​​else​​​ ​​{​​


​​33​​
​​mTextView.setText(​​​​"请求错误"​​​​);​​


​​34​​
​​}​​


​​35​​
​​} ​​​​catch​​​ ​​(ClientProtocolException e) {​​


​​36​​
​​mTextView.setText(e.getMessage().toString());​​


​​37​​
​​} ​​​​catch​​​ ​​(IOException e) {​​


​​38​​
​​mTextView.setText(e.getMessage().toString());​​


​​39​​
​​} ​​​​catch​​​ ​​(Exception e) {​​


​​40​​
​​mTextView.setText(e.getMessage().toString());​​


​​41​​
​​}​​


​​42​​
​​}​​


​​43​​
​​}​​


​​44​​
​​}​​


第四种方式

​​01​​
​​public​​​ ​​class​​​ ​​Activity4 ​​​​extends​​​ ​​Activity{​​


​​02​​
​​private​​​ ​​TextView mTextView;​​


​​03​​
​​private​​​ ​​Button mButton;​​


​​04​​



​​05​​
​​protected​​​ ​​void​​​ ​​onCreate(Bundle savedInstanceState) {​​


​​06​​
​​super​​​​.onCreate(savedInstanceState);​​


​​07​​
​​setContentView(R.layout.main);​​


​​08​​
​​mTextView = (TextView) findViewById(R.id.TextView01);​​


​​09​​
​​mButton = (Button) findViewById(R.id.Button01);​​


​​10​​
​​mButton.setOnClickListener(​​​​new​​​ ​​httpListener());​​


​​11​​
​​}​​


​​12​​



​​13​​
​​// 设置按钮监听器​​


​​14​​
​​class​​​ ​​httpListener ​​​​implements​​​ ​​OnClickListener {​​


​​15​​
​​public​​​ ​​void​​​ ​​onClick(View arg0) {​​


​​16​​
​​String httpUrl = ​​​​"http://192.168.0.101:8080/Test/test.jsp"​​​​;​​


​​17​​
​​// 创建HttpPost连接对象​​


​​18​​
​​HttpPost httpRequest = ​​​​new​​​ ​​HttpPost(httpUrl);​​


​​19​​
​​// 使用NameValuePair来保存要传递的Post参数​​


​​20​​
​​List params = ​​​​new​​​ ​​ArrayList();​​


​​21​​
​​// 添加要传递的参数​​


​​22​​
​​params.add(​​​​new​​​ ​​BasicNameValuePair(​​​​"par"​​​​,​​​​"HttpClient_android_Post"​​​​));​​


​​23​​
​​try​​​ ​​{​​


​​24​​
​​// 设置字符集​​


​​25​​
​​HttpEntity httpentity = ​​​​new​​​ ​​UrlEncodedFormEntity(params,​​​​"gb2312"​​​​);​​


​​26​​
​​// 请求httpRequest​​


​​27​​
​​httpRequest.setEntity(httpentity);​​


​​28​​
​​// 取的默认的HttpClient​​


​​29​​
​​HttpClient httpclient = ​​​​new​​​ ​​DefaultHttpClient();​​


​​30​​
​​// 取的HttpResponse​​


​​31​​
​​HttpResponse httpResponse = httpclient.execute(httpRequest);​​


​​32​​
​​// HttpStatus.SC_OK表示连接成功​​


​​33​​
​​if​​​ ​​(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {​​


​​34​​
​​// 取的返回的字符串​​


​​35​​
​​String strResult = EntityUtils.toString(httpResponse.getEntity());​​


​​36​​
​​// 这个返回值可能会在行尾出现小方格​​


​​37​​
​​// 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。​​


​​38​​
​​String strsResult = strResult.replace(​​​​"\r"​​​​, ​​​​""​​​​);​​


​​39​​
​​mTextView.setText(strsResult);​​


​​40​​
​​} ​​​​else​​​ ​​{​​


​​41​​
​​mTextView.setText(​​​​"请求错误"​​​​);​​


​​42​​
​​}​​


​​43​​
​​} ​​​​catch​​​ ​​(ClientProtocolException e) {​​


​​44​​
​​mTextView.setText(e.getMessage().toString());​​


​​45​​
​​} ​​​​catch​​​ ​​(IOException e) {​​


​​46​​
​​mTextView.setText(e.getMessage().toString());​​


​​47​​
​​} ​​​​catch​​​ ​​(Exception e) {​​


​​48​​
​​mTextView.setText(e.getMessage().toString());​​


​​49​​
​​}​​


​​50​​
​​}​​


​​51​​
​​}​​


​​52​​
​​}​​

我把它写到一个项目的4个Activity中了
有需要的下载源码看吧
​​猛击下载源码​​