这里有一个非常棒的http通讯的总结,我看了以后茅塞顿开。
先贴代码:
01 | publicclassActivity1extendsActivity { |
03 | privatefinalString DEBUG_TAG ="System.out"; |
05 | privateTextView mTextView; |
06 | privateButton mButton; |
08 | protectedvoidonCreate(Bundle savedInstanceState) { |
09 | super.onCreate(savedInstanceState); |
10 | setContentView(R.layout.main); |
12 | mTextView = (TextView) findViewById(R.id.TextView01); |
13 | mButton = (Button) findViewById(R.id.Button01); |
14 | mButton.setOnClickListener(newhttpListener()); |
18 | classhttpListenerimplementsOnClickListener { |
19 | publicvoidonClick(View v) { |
24 | privatevoidrefresh() { |
25 | String httpUrl ="http://192.168.0.101:8080/Test/test.jsp"; |
28 | // "http://192.168.0.101:8080/Test/test.jsp?par=abcdefg"; |
29 | String resultData =""; |
34 | }catch(MalformedURLException e) { |
35 | Log.d(DEBUG_TAG,"create URL Exception"); |
37 | // 声明HttpURLConnection对象 |
38 | HttpURLConnection urlConn =null; |
39 | // 声明InputStreamReader对象 |
40 | InputStreamReader in =null; |
42 | BufferedReader buffer =null; |
43 | String inputLine =null; |
46 | // 使用HttpURLConnection打开连接 |
47 | urlConn = (HttpURLConnection) url.openConnection(); |
49 | in =newInputStreamReader(urlConn.getInputStream()); |
50 | // 创建BufferReader对象,输出时候用到 |
51 | buffer =newBufferedReader(in); |
53 | while((inputLine = buffer.readLine()) !=null) { |
55 | resultData += inputLine +"\n"; |
58 | if(resultData !=null&& !resultData.equals("")) { |
59 | mTextView.setText(resultData); |
61 | mTextView.setText("读取的内容为空"); |
63 | }catch(IOException e) { |
67 | // 关闭InputStreamReader |
71 | }catch(IOException e) { |
76 | Log.d(DEBUG_TAG,"URL is NULL"); |
第二种方式:
001 | publicclassActivity2extendsActivity { |
003 | privatefinalString DEBUG_TAG ="System.out"; |
005 | privateTextView mTextView; |
006 | privateButton mButton; |
008 | protectedvoidonCreate(Bundle savedInstanceState) { |
009 | super.onCreate(savedInstanceState); |
010 | setContentView(R.layout.main); |
012 | mTextView = (TextView) findViewById(R.id.TextView01); |
013 | mButton = (Button) findViewById(R.id.Button01); |
014 | mButton.setOnClickListener(newhttpListener()); |
018 | classhttpListenerimplementsOnClickListener { |
019 | publicvoidonClick(View v) { |
024 | privatevoidrefresh() { |
025 | String httpUrl ="http://192.168.0.101:8080/Test/test.jsp"; |
026 | String resultData =""; |
030 | url =newURL(httpUrl); |
031 | }catch(MalformedURLException e) { |
032 | Log.d(DEBUG_TAG,"create URL Exception"); |
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; |
045 | // 使用HttpURLConnection打开连接 |
046 | urlConn = (HttpURLConnection) url.openConnection(); |
047 | // 因为这个是POST请求所以要设置为true |
048 | urlConn.setDoInput(true); |
049 | urlConn.setDoOutput(true); |
051 | urlConn.setRequestMethod("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 |
061 | out =newDataOutputStream(urlConn.getOutputStream()); |
062 | String content ="par="+ URLEncoder.encode("abcdefg","gb2312"); |
064 | out.writeBytes(content); |
066 | in =newInputStreamReader(urlConn.getInputStream()); |
067 | // 创建BufferReader对象,输出时候用到 |
068 | buffer =newBufferedReader(in); |
070 | while((inputLine = buffer.readLine()) !=null) { |
072 | resultData += inputLine +"\n"; |
075 | if(resultData !=null&& !resultData.equals("")) { |
076 | mTextView.setText(resultData); |
078 | mTextView.setText("读取的内容为空"); |
080 | }catch(IOException e) { |
084 | // 刷新DataOutputStream流 |
086 | // 关闭DataOutputStream流 |
088 | // 关闭InputStreamReader |
091 | urlConn.disconnect(); |
092 | }catch(IOException e) { |
097 | Log.d(DEBUG_TAG,"URL is NULL"); |
第三种方式
01 | publicclassActivity3extendsActivity{ |
02 | privateTextView mTextView; |
03 | privateButton mButton; |
05 | protectedvoidonCreate(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(newhttpListener()); |
14 | classhttpListenerimplementsOnClickListener { |
15 | publicvoidonClick(View v) { |
16 | String httpUrl ="http://192.168.0.101:8080/Test/test.jsp?par=HttpClient_android_Get"; |
18 | HttpGet httpRequest =newHttpGet(httpUrl); |
21 | HttpClient httpclient =newDefaultHttpClient(); |
22 | // 请求HttpClient,取的HttpResponse |
23 | HttpResponse httpResponse = httpclient.execute(httpRequest); |
25 | if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { |
27 | String strResult = EntityUtils.toString(httpResponse.getEntity()); |
29 | // 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。 |
30 | String strsResult = strResult.replace("\r",""); |
31 | mTextView.setText(strsResult); |
33 | mTextView.setText("请求错误"); |
35 | }catch(ClientProtocolException e) { |
36 | mTextView.setText(e.getMessage().toString()); |
37 | }catch(IOException e) { |
38 | mTextView.setText(e.getMessage().toString()); |
40 | mTextView.setText(e.getMessage().toString()); |
第四种方式
01 | publicclassActivity4extendsActivity{ |
02 | privateTextView mTextView; |
03 | privateButton mButton; |
05 | protectedvoidonCreate(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(newhttpListener()); |
14 | classhttpListenerimplementsOnClickListener { |
15 | publicvoidonClick(View arg0) { |
16 | String httpUrl ="http://192.168.0.101:8080/Test/test.jsp"; |
18 | HttpPost httpRequest =newHttpPost(httpUrl); |
19 | // 使用NameValuePair来保存要传递的Post参数 |
20 | List params =newArrayList(); |
22 | params.add(newBasicNameValuePair("par","HttpClient_android_Post")); |
25 | HttpEntity httpentity =newUrlEncodedFormEntity(params,"gb2312"); |
27 | httpRequest.setEntity(httpentity); |
29 | HttpClient httpclient =newDefaultHttpClient(); |
31 | HttpResponse httpResponse = httpclient.execute(httpRequest); |
32 | // HttpStatus.SC_OK表示连接成功 |
33 | if(httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { |
35 | String strResult = EntityUtils.toString(httpResponse.getEntity()); |
37 | // 在TextView要显示的文字过滤掉回车符("\r")就可以正常显示了。 |
38 | String strsResult = strResult.replace("\r",""); |
39 | mTextView.setText(strsResult); |
41 | mTextView.setText("请求错误"); |
43 | }catch(ClientProtocolException e) { |
44 | mTextView.setText(e.getMessage().toString()); |
45 | }catch(IOException e) { |
46 | mTextView.setText(e.getMessage().toString()); |
48 | mTextView.setText(e.getMessage().toString()); |
- Android(安卓)sqlite cursor的遍历
- PackageManagerService(Android5.1)深入分析(四)安装应用
- android之GSON解析JSON
- Android(4.X)学习笔记
- 【Android】通过软引用实现图片缓存,防止内存溢出
- 用PC应用程序通过USB读写Andriod里面的数据
- Android:时间控件
- Android控件开发之Gallery
- Android开发经验总结
随机推荐
-
Android(安卓)实现简单打电话
-
Android(安卓)博客园客户端 (一) 基本界面
-
开源库android-state-button 为Android
-
Android(安卓)根据item大小实现自动排列
-
android实现上下滑动
-
Android(安卓)拦截 HOME 按键
-
Android使用SQLiteDatabase直接存取数据
-
Android(安卓)greenDAO 3.2.2简单使用
-
android按键灯流程分析
-
Android期末机试考核模拟题