主要实现通过客户端访问某一服务端,在服务端的服务器里可见请求内容,并且把内容返回到客户端上。具体实现看一下代码:
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取数据,就到下一节课发表代码。










