Android 以Http协议 使用get和post方式请求站点

来源:互联网 发布:mount windows共享目录 编辑:程序博客网 时间:2024/05/22 23:52

此文就是作为笔记使用,以防忘记,下面是全部代码:

此文请求的是web程序的一个servlet 定义了一个post和get方法 ,get方法传入的name和age,post传入的参数是name1和age1 。

你可以自己建一个简单的站点用于测试:

下面是我的servlet 主要代码:

        public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=gbk");String name=request.getParameter("name").toString();String age=request.getParameter("age").toString();PrintWriter out = response.getWriter();out.print("你使用Get发送请求,你的名字是:"+name+",你的年龄是:"+age);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=gbk");String name=request.getParameter("name1").toString();String age=request.getParameter("age1").toString();PrintWriter out = response.getWriter();out.print("你使用Post发送请求,你的名字是:"+name+",你的年龄是:"+age);}

android main代码:


package ytbk.soft.activity;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.ArrayList;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import android.os.Bundle;import android.os.StrictMode;import android.annotation.SuppressLint;import android.app.Activity;import android.graphics.Path.FillType;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;public class MainActivity extends Activity {private Button getButton = null;private Button postButton=null;private EditText name=null;private EditText age=null;private String baseUrl="http://192.168.10.86:8080/service/indexService";private HttpResponse response = null;private HttpEntity entity = null;@SuppressLint("NewApi")@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.mainactivity);//以下是android 4 版本以后,无法在主线程访问网络解决方法   如果你还是2系列的版本讲此代码去掉StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork() // 这里可以替换为detectAll() 就包括了磁盘读写和网络I/O.penaltyLog() //打印logcat,当然也可以定位到dropbox,通过文件保存相应的log.build());StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects() //探测SQLite数据库操作.penaltyLog() //打印logcat.penaltyDeath().build()); getButton=(Button)this.findViewById(R.id.getButton);postButton=(Button)this.findViewById(R.id.postButton);name=(EditText)this.findViewById(R.id.name);age=(EditText)this.findViewById(R.id.age);getButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String sname=name.getText().toString();String sage=age.getText().toString();String Url=baseUrl+"?name="+sname+"&age="+sage;HttpGet httpget=new HttpGet(Url);HttpClient client=new DefaultHttpClient();InputStream stream=null;try {response=client.execute(httpget);entity=response.getEntity();stream=entity.getContent();BufferedReader reder=new BufferedReader(new InputStreamReader(stream));String result="";String line="";while((line=reder.readLine())!=null){result=result+line;}System.out.println(result);} catch (Exception e) {System.out.println(e.getMessage()+"```````````````````````````````"+e.toString());}finally{try {stream.close();} catch (Exception e2) {e2.printStackTrace();}}}});postButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {String sname=name.getText().toString();String sage=age.getText().toString();NameValuePair namevalue=new BasicNameValuePair("name1",sname);NameValuePair agevalue=new BasicNameValuePair("age1",sage);List<NameValuePair> list=new ArrayList<NameValuePair>();list.add(namevalue);list.add(agevalue);InputStream stream=null;try {HttpEntity entity=new UrlEncodedFormEntity(list);HttpPost post=new HttpPost(baseUrl);post.setEntity(entity);HttpClient client=new DefaultHttpClient();try {response=client.execute(post);                                                //一定要注意此处,重新获取响应数据,否则你获取到的是你的url参数请求信息entity=response.getEntity();stream=entity.getContent();BufferedReader reder=new BufferedReader(new InputStreamReader(stream));String result="";String line="";while((line=reder.readLine())!=null){result=result+line;}System.out.println(result);} catch (Exception e) {System.out.println(e.getMessage()+"```````````````````````````````"+e.toString());}finally{try {stream.close();} catch (Exception e2) {e2.printStackTrace();}}} catch (Exception e) {e.printStackTrace();}finally{try {stream.close();} catch (Exception e2) {e2.printStackTrace();}}}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

0 0