通过POST方式获取互联网资源 图片看不了?点击切换HTTP 返回上层
上一节教程我们演示了 Android 使用 GET 获取网络资源的运行效果和实例,下面实例 POSTDemo 中演示了使用 POST 方式访问 getMessage.jsp 的过程,运行效果如图 1 所示。

图 1 实例POSTDemo的运行效果
实例 POSTDemo 中 main.xml 的具体实现代码如下:
实例 POSTDemo 中 AndroidManifest.xml 的具体实现代码如下:
其中:
实例 POSTDemo 中 MainActivity.java 的具体实现代码如下:
其中:
此外,Android 开发包还提供了 org.apache.http.client.methods.HttpGet 和 org.apache.http.client.methods.HttpPost 两个类,分别用于处理 GET 和 POST 网络访问方式。

图 1 实例POSTDemo的运行效果
实例 POSTDemo 中 main.xml 的具体实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <?xml version= "1.0" encoding= "utf-8" ?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" android:orientation= "vertical" android:layout_width= "fill_parent" android:layout_height= "fill_parent" > <Button android:id= "@+id/Button_POST" android:layout_width= "fill_parent" android:layout_height= "wrap_content" android:text= "@string/button_name" /> <TextView android:id= "@+id/TextView_POST" android:layout_width= "fill_parent" android:layout_height= "wrap_content" /> </LinearLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <?xml version= "l.0" encoding= "utf-8" ?> <manifest xmlns:android= "http;//schemas.android.com/apk/res/android" package= "com.android.activity" android:versionCode= "1" android:versionName= "1.0" > <uses-sdk android:minSdkVersion= "4" /> <uses-permission android: name = "android.permission.INTERNET" /> <application android:icon= "@drawable/ic_launcher" android:label= "@string/app_name" > <activity android: name = ".MainActivity" android:label= "@string/app_name" > <intent-filter> < action android: name = "android.intent.action.MAIN" /> <category android: name = "android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> |
<uses-permission android:name="android.permission.INTERNET" />
设置可以访问网络的权限。实例 POSTDemo 中 MainActivity.java 的具体实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | package introdction.android.POSTDemo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.os.Bundle; import android. view . View ; import android. view . View .OnClickListener; import android.widPOST.Button; import android.widPOST.TextView; public class MainActivity extends Activity { private TextView textView_POST; @Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main); textView_POST= (TextView) findViewById (R.id.TextView_POST) Button button_POST= (Button) findViewById (R.id.Button_POST); button_POST.setOnClickListener (new OnClickListener() { public void onClick ( View v) { String httpUrl= "http:// 175.168.35.198:8080/android/POSTMessage.jsp?message=Helloworld" ; String resultData = "" ; URL url= null ; try { url=new URL (httpUrl) ; } catch (MalformedURLException e) { System. out .println (e.POSTMessage()); } if (url != null ) { try { HttpURLConnection urlConn= (HttpURLConnection) url .openConnection(); urlConn.setDoOutput( true ); urlConn.setDoInput( true ); urlConn.setRequestMethod( "POST" ); urlConn.setUseCaches( false ); urlConn.setInstanceFollowRedirects( true ); urlConn.setRequestProperty( "Content-Type" , "application/x-www-form-urlencoded" ) urlConn. connect (); DataOutputStream out = new DataOutputStream(urlConn.getOutputStream()); String content= "message=" +URLEncoder.encode( "HelloWorld" , "gb2312" ); out .writeBytes(content); out .flush(); out . close (); BufferedReader buffer=new BufferedReader (new InputStreamReader(urlConn.getInputStream())); String inputLine= null ; while (((inputLine=buffer.readLine()) != null )) { resultData+=inputLine+ "\n" ; } reader. close (); urlConn.disconnect(); if (resultData != null ) { textView_POST.setText (resultData) ; } else { textView_POST.setText ( "Sorry,the content is null" ) ; } } catch (IOException e) { textView_POST.setText (e.getMessage () ) ; } } else { textView_POST.setText ( "url is null" ) ; } } }); } } |
String httpUrl="http:// 175.168.35.198:8080/android/getMessage.jsp"
设置要访问的 URL 地址,urlConn.setRequestMethod("POST") 设置访问方式为 POST 方式。
String content="message="+URLEncoder.encode("HelloWorld", "gb2312");
out.writeBytes(content);
此外,Android 开发包还提供了 org.apache.http.client.methods.HttpGet 和 org.apache.http.client.methods.HttpPost 两个类,分别用于处理 GET 和 POST 网络访问方式。