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

基于apache的httpclient发送请求。

2012-01-14 13:42 429 查看
由于毕业设计要涉及到互联网的的通讯,所以很快就接触到于远程服务器交互。起初想是和服务器的数据库直接连接,后来找了半天,都没有相关的文档,而且也不安全。故转为通过网页来和数据库交互。

服务端:php+apache

user.php

<?php

$name=$_POST['name'];

$passwd=$_POST['pwd'];

if($name=="yecao" && $passwd=="yecao")

{

echo "ok";

}else{
$getname=$_GET["getname"];
$getpwd=$_GET["getpwd"];
echo "your name:".$getname."and your pwd:".$getpwd;
}
?>


客户端:android

xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<Button
android:text="POST发送"
android:id="@+id/post"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button
android:text="GET发送"
android:id="@+id/get"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>

<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/showtext" />

</LinearLayout>


界面代码:

package com.loin;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.Header;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class LoginActivity extends Activity {
/** Called when the activity is first created. */
Button postbt,getbt;
TextView tv;
public String url;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
postbt=(Button)findViewById(R.id.post);
getbt=(Button)findViewById(R.id.get);
url ="http://192.168.1.6/usr.php";
tv=(TextView)findViewById(R.id.showtext);
postbt.setOnClickListener(postclick);
getbt.setOnClickListener(getclick);

}
//post
private OnClickListener postclick=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

postdata(url,"yecao","yecao");
}
};
//get
private OnClickListener getclick=new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getdata(url,"yecao","yecao");
}
};

//postmethod
private void postdata(String url,String nametext,String pwdtext)
{
try{
HttpClient http=new DefaultHttpClient();
HttpPost post=new HttpPost(url);
List<NameValuePair> pair=new ArrayList<NameValuePair>();
pair.add(new BasicNameValuePair("name", nametext));
pair.add(new BasicNameValuePair("pwd", pwdtext));
post.setEntity(new UrlEncodedFormEntity(pair, "utf-8"));
HttpResponse response=http.execute(post);
HttpEntity ht=response.getEntity();
String result="";
String line="";
if(response.getStatusLine().getStatusCode()==200)
{
BufferedReader reader=new BufferedReader(new InputStreamReader(ht.getContent()));//以流的方式读取可以避免中文乱码。
while((line=reader.readLine())!=null)
{
result=result+line;
}
tv.setText(result);
}
}catch(Exception e){e.printStackTrace();}
}

//getMethod
private void getdata(String url,String nametext,String pwdtext)
{
HttpClient httpclient=new DefaultHttpClient();
url=url+"?getname="+nametext+"&getpwd="+pwdtext;
HttpGet get=new HttpGet(url);
try {
HttpResponse response=httpclient.execute(get);
HttpEntity entity=response.getEntity();
String result="";
String line="";
if(response.getStatusLine().getStatusCode()==200)
{
BufferedReader reader=new BufferedReader(new InputStreamReader(entity.getContent()));
while((line=reader.readLine())!=null)
{
result=result+line;
}
tv.setText(result);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


最后还要给配置文件加上访问互联网的权限:

<uses-permission android:name="android.permission.INTERNET"/>


效果图:

get时候:



post的时候:

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