您的位置:首页 > 理论基础 > 计算机网络

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

2013-12-10 10:32 525 查看
此文就是作为笔记使用,以防忘记,下面是全部代码:

此文请求的是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")
@Override
protected 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()
{
@Override
public 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()
{
@Override
public 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();
}
}
}
});
}

@Override
public 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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐