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