主要实现通过客户端访问某一服务端,在服务端的服务器里可见请求内容,并且把内容返回到客户端上。具体实现看一下代码:

1、新建XML,定义button(点击),TextView(显示返回数据);

<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>

<TextView
android:id="@+id/txtView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="buttonback"
android:text="点击获取返回数据"/>

</LinearLayout>
</span>


2、新建Activty继承Activty

<span style="font-size:18px;">package com.example.com.scxh.httpservicehuoqu;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
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.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class HttpUrlConnectionAct extends Activity {
private TextView mTextView;
private Button button;
//某一服服務端的地址(本地地址/服务端端口/服务端文件夹名(web)/web文件夹里自动生成的web.xml里的自定义名)
private String httpUrl = "http://192.168.1.148:8080/ServletProject/firstservlet";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.txtView);

}
//android按鈕点击监听
public void buttonback(View v) {
new AsyncTask<String, Void, String>() {
@Override
protected String doInBackground(String... params) {

String content = getApacheData(httpUrl);
Log.e("content", content + " ");
return content;
}

@Override
protected void onPostExecute(String result) {

mTextView.setText(result);
}

}.execute(httpUrl);

}

/* 利用apache获取网络数据 */
private String getApacheData(String url) {

Log.e("aa", "sssss");
StringBuffer sb = new StringBuffer();
HttpClient httpClient = new DefaultHttpClient();

//用post传数据
HttpPost httpPost = new HttpPost(url);
BasicNameValuePair username = new BasicNameValuePair("username",
"general");
BasicNameValuePair password = new BasicNameValuePair("password",
"12315");
BasicNameValuePair sex = new BasicNameValuePair("sex", "男");
ArrayList<BasicNameValuePair> parPairs = new ArrayList<BasicNameValuePair>();
parPairs.add(username);
parPairs.add(password);
parPairs.add(sex);

Log.e("bb", "sssss");
UrlEncodedFormEntity urlef = null;
try {
urlef = new UrlEncodedFormEntity(parPairs, "utf-8");
} catch (UnsupportedEncodingException e1) {

e1.printStackTrace();
}
httpPost.setEntity(urlef);
HttpResponse httpResponse = null;
try {
httpResponse = httpClient.execute(httpPost);
} catch (ClientProtocolException e1) {

e1.printStackTrace();
} catch (IOException e1) {

e1.printStackTrace();
}

Log.e("cc", "sssss");

try {

HttpEntity httpEntity = httpResponse.getEntity();
//用输入流接收
InputStream is = httpEntity.getContent();

int statusCode = httpResponse.getStatusLine().getStatusCode();
Log.v("statusCode", statusCode + "");
if (statusCode == 200) {
// 创建包装流
BufferedReader br = new BufferedReader(
new InputStreamReader(is));
// 定义String类型用于存储单行数据
String line = null;
// 创建StringBuffer对象用于存储所有数据
sb = new StringBuffer();
while ((line = br.readLine()) != null) {
sb.append(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}

return sb.toString();

}
}
</span>

这是其中的一种post取数据的方法,还有get取数据,就到下一节课发表代码。